Bug 1347866 - Part1: Update ANGLE to chromium/2950; r?jgilbert draft
authorChih-Yi Leu <cleu@mozilla.com>
Mon, 10 Apr 2017 16:26:52 +0800
changeset 559627 42441a657f93a31bfa8132bf39795d9eec0d4aea
parent 559365 45692c884fdd5136a64fb2f8a61a0c8183b69331
child 559628 5a5f0f04246bd5766d54c7a9526fd0c44b927192
push id53134
push userbmo:cleu@mozilla.com
push dateMon, 10 Apr 2017 08:50:37 +0000
reviewersjgilbert
bugs1347866
milestone55.0a1
Bug 1347866 - Part1: Update ANGLE to chromium/2950; r?jgilbert MozReview-Commit-ID: 5vfdprnqLnA
gfx/angle/AUTHORS
gfx/angle/BUILD.gn
gfx/angle/CONTRIBUTORS
gfx/angle/DEPS
gfx/angle/DEPS.chromium
gfx/angle/LICENSE
gfx/angle/Makefile.in
gfx/angle/README.chromium
gfx/angle/README.md
gfx/angle/README.mozilla
gfx/angle/include/EGL/egl.h
gfx/angle/include/EGL/eglext.h
gfx/angle/include/EGL/eglplatform.h
gfx/angle/include/GLES2/gl2.h
gfx/angle/include/GLES2/gl2ext.h
gfx/angle/include/GLES2/gl2platform.h
gfx/angle/include/GLES3/gl3.h
gfx/angle/include/GLES3/gl31.h
gfx/angle/include/GLES3/gl32.h
gfx/angle/include/GLES3/gl3platform.h
gfx/angle/include/GLSLANG/ShaderLang.h
gfx/angle/include/GLSLANG/ShaderVars.h
gfx/angle/include/angle_gl.h
gfx/angle/include/angle_windowsstore.h
gfx/angle/include/export.h
gfx/angle/include/platform/Platform.h
gfx/angle/moz.build
gfx/angle/src/angle.gyp
gfx/angle/src/commit.h
gfx/angle/src/commit_id.py
gfx/angle/src/common/BitSetIterator.h
gfx/angle/src/common/BitSetIterator_unittest.cpp
gfx/angle/src/common/Color.h
gfx/angle/src/common/Color.inl
gfx/angle/src/common/Float16ToFloat32.cpp
gfx/angle/src/common/Float16ToFloat32.py
gfx/angle/src/common/MemoryBuffer.cpp
gfx/angle/src/common/MemoryBuffer.h
gfx/angle/src/common/Optional.h
gfx/angle/src/common/Optional_unittest.cpp
gfx/angle/src/common/angleutils.cpp
gfx/angle/src/common/angleutils.h
gfx/angle/src/common/debug.cpp
gfx/angle/src/common/debug.h
gfx/angle/src/common/event_tracer.cpp
gfx/angle/src/common/event_tracer.h
gfx/angle/src/common/mathutil.cpp
gfx/angle/src/common/mathutil.h
gfx/angle/src/common/mathutil_unittest.cpp
gfx/angle/src/common/matrix_utils.h
gfx/angle/src/common/matrix_utils_unittest.cpp
gfx/angle/src/common/platform.h
gfx/angle/src/common/string_utils.cpp
gfx/angle/src/common/string_utils.h
gfx/angle/src/common/string_utils_unittest.cpp
gfx/angle/src/common/third_party/numerics/README.angle
gfx/angle/src/common/third_party/numerics/base/logging.h
gfx/angle/src/common/third_party/numerics/base/numerics/OWNERS
gfx/angle/src/common/third_party/numerics/base/numerics/safe_conversions.h
gfx/angle/src/common/third_party/numerics/base/numerics/safe_conversions_impl.h
gfx/angle/src/common/third_party/numerics/base/numerics/safe_math.h
gfx/angle/src/common/third_party/numerics/base/numerics/safe_math_impl.h
gfx/angle/src/common/third_party/numerics/base/numerics/safe_numerics_unittest.cc
gfx/angle/src/common/tls.cpp
gfx/angle/src/common/tls.h
gfx/angle/src/common/utilities.cpp
gfx/angle/src/common/utilities.h
gfx/angle/src/common/utilities_unittest.cpp
gfx/angle/src/common/vector_utils.h
gfx/angle/src/common/vector_utils_unittest.cpp
gfx/angle/src/common/version.h
gfx/angle/src/compiler.gypi
gfx/angle/src/compiler/fuzz/translator_fuzzer.cpp
gfx/angle/src/compiler/preprocessor/64bit-tokenizer-safety.patch
gfx/angle/src/compiler/preprocessor/DiagnosticsBase.cpp
gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h
gfx/angle/src/compiler/preprocessor/DirectiveHandlerBase.cpp
gfx/angle/src/compiler/preprocessor/DirectiveHandlerBase.h
gfx/angle/src/compiler/preprocessor/DirectiveParser.cpp
gfx/angle/src/compiler/preprocessor/DirectiveParser.h
gfx/angle/src/compiler/preprocessor/ExpressionParser.cpp
gfx/angle/src/compiler/preprocessor/ExpressionParser.h
gfx/angle/src/compiler/preprocessor/ExpressionParser.y
gfx/angle/src/compiler/preprocessor/Input.cpp
gfx/angle/src/compiler/preprocessor/Input.h
gfx/angle/src/compiler/preprocessor/Lexer.cpp
gfx/angle/src/compiler/preprocessor/Lexer.h
gfx/angle/src/compiler/preprocessor/Macro.cpp
gfx/angle/src/compiler/preprocessor/Macro.h
gfx/angle/src/compiler/preprocessor/MacroExpander.cpp
gfx/angle/src/compiler/preprocessor/MacroExpander.h
gfx/angle/src/compiler/preprocessor/Preprocessor.cpp
gfx/angle/src/compiler/preprocessor/Preprocessor.h
gfx/angle/src/compiler/preprocessor/SourceLocation.h
gfx/angle/src/compiler/preprocessor/Token.cpp
gfx/angle/src/compiler/preprocessor/Token.h
gfx/angle/src/compiler/preprocessor/Tokenizer.cpp
gfx/angle/src/compiler/preprocessor/Tokenizer.h
gfx/angle/src/compiler/preprocessor/Tokenizer.l
gfx/angle/src/compiler/preprocessor/numeric_lex.h
gfx/angle/src/compiler/translator/64bit-lexer-safety.patch
gfx/angle/src/compiler/translator/ASTMetadataHLSL.cpp
gfx/angle/src/compiler/translator/ASTMetadataHLSL.h
gfx/angle/src/compiler/translator/AddDefaultReturnStatements.cpp
gfx/angle/src/compiler/translator/AddDefaultReturnStatements.h
gfx/angle/src/compiler/translator/ArrayReturnValueToOutParameter.cpp
gfx/angle/src/compiler/translator/ArrayReturnValueToOutParameter.h
gfx/angle/src/compiler/translator/BaseTypes.h
gfx/angle/src/compiler/translator/BuiltInFunctionEmulator.cpp
gfx/angle/src/compiler/translator/BuiltInFunctionEmulator.h
gfx/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp
gfx/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.h
gfx/angle/src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp
gfx/angle/src/compiler/translator/BuiltInFunctionEmulatorHLSL.h
gfx/angle/src/compiler/translator/Cache.cpp
gfx/angle/src/compiler/translator/Cache.h
gfx/angle/src/compiler/translator/CallDAG.cpp
gfx/angle/src/compiler/translator/CallDAG.h
gfx/angle/src/compiler/translator/CodeGen.cpp
gfx/angle/src/compiler/translator/Common.h
gfx/angle/src/compiler/translator/Compiler.cpp
gfx/angle/src/compiler/translator/Compiler.h
gfx/angle/src/compiler/translator/ConstantUnion.cpp
gfx/angle/src/compiler/translator/ConstantUnion.h
gfx/angle/src/compiler/translator/DeferGlobalInitializers.cpp
gfx/angle/src/compiler/translator/DeferGlobalInitializers.h
gfx/angle/src/compiler/translator/Diagnostics.cpp
gfx/angle/src/compiler/translator/Diagnostics.h
gfx/angle/src/compiler/translator/DirectiveHandler.cpp
gfx/angle/src/compiler/translator/DirectiveHandler.h
gfx/angle/src/compiler/translator/EmulateGLFragColorBroadcast.cpp
gfx/angle/src/compiler/translator/EmulateGLFragColorBroadcast.h
gfx/angle/src/compiler/translator/EmulatePrecision.cpp
gfx/angle/src/compiler/translator/EmulatePrecision.h
gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp
gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.h
gfx/angle/src/compiler/translator/ExtensionBehavior.h
gfx/angle/src/compiler/translator/ExtensionGLSL.cpp
gfx/angle/src/compiler/translator/ExtensionGLSL.h
gfx/angle/src/compiler/translator/FlagStd140Structs.cpp
gfx/angle/src/compiler/translator/FlagStd140Structs.h
gfx/angle/src/compiler/translator/ForLoopUnroll.cpp
gfx/angle/src/compiler/translator/ForLoopUnroll.h
gfx/angle/src/compiler/translator/HashNames.h
gfx/angle/src/compiler/translator/InfoSink.cpp
gfx/angle/src/compiler/translator/InfoSink.h
gfx/angle/src/compiler/translator/Initialize.cpp
gfx/angle/src/compiler/translator/Initialize.h
gfx/angle/src/compiler/translator/InitializeDll.cpp
gfx/angle/src/compiler/translator/InitializeDll.h
gfx/angle/src/compiler/translator/InitializeGlobals.h
gfx/angle/src/compiler/translator/InitializeParseContext.cpp
gfx/angle/src/compiler/translator/InitializeParseContext.h
gfx/angle/src/compiler/translator/InitializeVariables.cpp
gfx/angle/src/compiler/translator/InitializeVariables.h
gfx/angle/src/compiler/translator/IntermNode.cpp
gfx/angle/src/compiler/translator/IntermNode.h
gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp
gfx/angle/src/compiler/translator/IntermNodePatternMatcher.h
gfx/angle/src/compiler/translator/IntermTraverse.cpp
gfx/angle/src/compiler/translator/Intermediate.cpp
gfx/angle/src/compiler/translator/Intermediate.h
gfx/angle/src/compiler/translator/LoopInfo.cpp
gfx/angle/src/compiler/translator/LoopInfo.h
gfx/angle/src/compiler/translator/MMap.h
gfx/angle/src/compiler/translator/NodeSearch.h
gfx/angle/src/compiler/translator/Operator.cpp
gfx/angle/src/compiler/translator/Operator.h
gfx/angle/src/compiler/translator/OutputESSL.cpp
gfx/angle/src/compiler/translator/OutputESSL.h
gfx/angle/src/compiler/translator/OutputGLSL.cpp
gfx/angle/src/compiler/translator/OutputGLSL.h
gfx/angle/src/compiler/translator/OutputGLSLBase.cpp
gfx/angle/src/compiler/translator/OutputGLSLBase.h
gfx/angle/src/compiler/translator/OutputHLSL.cpp
gfx/angle/src/compiler/translator/OutputHLSL.h
gfx/angle/src/compiler/translator/ParseContext.cpp
gfx/angle/src/compiler/translator/ParseContext.h
gfx/angle/src/compiler/translator/PoolAlloc.cpp
gfx/angle/src/compiler/translator/PoolAlloc.h
gfx/angle/src/compiler/translator/Pragma.h
gfx/angle/src/compiler/translator/PruneEmptyDeclarations.cpp
gfx/angle/src/compiler/translator/PruneEmptyDeclarations.h
gfx/angle/src/compiler/translator/RecordConstantPrecision.cpp
gfx/angle/src/compiler/translator/RecordConstantPrecision.h
gfx/angle/src/compiler/translator/RegenerateStructNames.cpp
gfx/angle/src/compiler/translator/RegenerateStructNames.h
gfx/angle/src/compiler/translator/RemoveDynamicIndexing.cpp
gfx/angle/src/compiler/translator/RemoveDynamicIndexing.h
gfx/angle/src/compiler/translator/RemovePow.cpp
gfx/angle/src/compiler/translator/RemovePow.h
gfx/angle/src/compiler/translator/RemoveSwitchFallThrough.cpp
gfx/angle/src/compiler/translator/RemoveSwitchFallThrough.h
gfx/angle/src/compiler/translator/RewriteDoWhile.cpp
gfx/angle/src/compiler/translator/RewriteDoWhile.h
gfx/angle/src/compiler/translator/RewriteElseBlocks.cpp
gfx/angle/src/compiler/translator/RewriteElseBlocks.h
gfx/angle/src/compiler/translator/RewriteTexelFetchOffset.cpp
gfx/angle/src/compiler/translator/RewriteTexelFetchOffset.h
gfx/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp
gfx/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.h
gfx/angle/src/compiler/translator/SearchSymbol.cpp
gfx/angle/src/compiler/translator/SearchSymbol.h
gfx/angle/src/compiler/translator/SeparateArrayInitialization.cpp
gfx/angle/src/compiler/translator/SeparateArrayInitialization.h
gfx/angle/src/compiler/translator/SeparateDeclarations.cpp
gfx/angle/src/compiler/translator/SeparateDeclarations.h
gfx/angle/src/compiler/translator/SeparateExpressionsReturningArrays.cpp
gfx/angle/src/compiler/translator/SeparateExpressionsReturningArrays.h
gfx/angle/src/compiler/translator/ShaderLang.cpp
gfx/angle/src/compiler/translator/ShaderVars.cpp
gfx/angle/src/compiler/translator/SimplifyLoopConditions.cpp
gfx/angle/src/compiler/translator/SimplifyLoopConditions.h
gfx/angle/src/compiler/translator/SplitSequenceOperator.cpp
gfx/angle/src/compiler/translator/SplitSequenceOperator.h
gfx/angle/src/compiler/translator/StructureHLSL.cpp
gfx/angle/src/compiler/translator/StructureHLSL.h
gfx/angle/src/compiler/translator/SymbolTable.cpp
gfx/angle/src/compiler/translator/SymbolTable.h
gfx/angle/src/compiler/translator/TextureFunctionHLSL.cpp
gfx/angle/src/compiler/translator/TextureFunctionHLSL.h
gfx/angle/src/compiler/translator/TranslatorESSL.cpp
gfx/angle/src/compiler/translator/TranslatorESSL.h
gfx/angle/src/compiler/translator/TranslatorGLSL.cpp
gfx/angle/src/compiler/translator/TranslatorGLSL.h
gfx/angle/src/compiler/translator/TranslatorHLSL.cpp
gfx/angle/src/compiler/translator/TranslatorHLSL.h
gfx/angle/src/compiler/translator/Types.cpp
gfx/angle/src/compiler/translator/Types.h
gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.cpp
gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.h
gfx/angle/src/compiler/translator/UnfoldShortCircuitToIf.cpp
gfx/angle/src/compiler/translator/UnfoldShortCircuitToIf.h
gfx/angle/src/compiler/translator/UniformHLSL.cpp
gfx/angle/src/compiler/translator/UniformHLSL.h
gfx/angle/src/compiler/translator/UtilsHLSL.cpp
gfx/angle/src/compiler/translator/UtilsHLSL.h
gfx/angle/src/compiler/translator/ValidateGlobalInitializer.cpp
gfx/angle/src/compiler/translator/ValidateGlobalInitializer.h
gfx/angle/src/compiler/translator/ValidateLimitations.cpp
gfx/angle/src/compiler/translator/ValidateLimitations.h
gfx/angle/src/compiler/translator/ValidateMaxParameters.cpp
gfx/angle/src/compiler/translator/ValidateMaxParameters.h
gfx/angle/src/compiler/translator/ValidateOutputs.cpp
gfx/angle/src/compiler/translator/ValidateOutputs.h
gfx/angle/src/compiler/translator/ValidateSwitch.cpp
gfx/angle/src/compiler/translator/ValidateSwitch.h
gfx/angle/src/compiler/translator/VariableInfo.cpp
gfx/angle/src/compiler/translator/VariableInfo.h
gfx/angle/src/compiler/translator/VariablePacker.cpp
gfx/angle/src/compiler/translator/VariablePacker.h
gfx/angle/src/compiler/translator/VersionGLSL.cpp
gfx/angle/src/compiler/translator/VersionGLSL.h
gfx/angle/src/compiler/translator/blocklayout.cpp
gfx/angle/src/compiler/translator/blocklayout.h
gfx/angle/src/compiler/translator/blocklayoutHLSL.cpp
gfx/angle/src/compiler/translator/blocklayoutHLSL.h
gfx/angle/src/compiler/translator/generate_parser.sh
gfx/angle/src/compiler/translator/glslang.h
gfx/angle/src/compiler/translator/glslang.l
gfx/angle/src/compiler/translator/glslang.y
gfx/angle/src/compiler/translator/glslang_lex.cpp
gfx/angle/src/compiler/translator/glslang_tab.cpp
gfx/angle/src/compiler/translator/glslang_tab.h
gfx/angle/src/compiler/translator/intermOut.cpp
gfx/angle/src/compiler/translator/length_limits.h
gfx/angle/src/compiler/translator/util.cpp
gfx/angle/src/compiler/translator/util.h
gfx/angle/src/copy_compiler_dll.bat
gfx/angle/src/image_util/copyimage.cpp
gfx/angle/src/image_util/copyimage.h
gfx/angle/src/image_util/copyimage.inl
gfx/angle/src/image_util/generatemip.h
gfx/angle/src/image_util/generatemip.inl
gfx/angle/src/image_util/imageformats.cpp
gfx/angle/src/image_util/imageformats.h
gfx/angle/src/image_util/loadimage.cpp
gfx/angle/src/image_util/loadimage.h
gfx/angle/src/image_util/loadimage.inl
gfx/angle/src/image_util/loadimage_etc.cpp
gfx/angle/src/libANGLE/AttributeMap.cpp
gfx/angle/src/libANGLE/AttributeMap.h
gfx/angle/src/libANGLE/BinaryStream.h
gfx/angle/src/libANGLE/BinaryStream_unittest.cpp
gfx/angle/src/libANGLE/Buffer.cpp
gfx/angle/src/libANGLE/Buffer.h
gfx/angle/src/libANGLE/Caps.cpp
gfx/angle/src/libANGLE/Caps.h
gfx/angle/src/libANGLE/Compiler.cpp
gfx/angle/src/libANGLE/Compiler.h
gfx/angle/src/libANGLE/Config.cpp
gfx/angle/src/libANGLE/Config.h
gfx/angle/src/libANGLE/Config_unittest.cpp
gfx/angle/src/libANGLE/Constants.h
gfx/angle/src/libANGLE/Context.cpp
gfx/angle/src/libANGLE/Context.h
gfx/angle/src/libANGLE/ContextState.cpp
gfx/angle/src/libANGLE/ContextState.h
gfx/angle/src/libANGLE/Debug.cpp
gfx/angle/src/libANGLE/Debug.h
gfx/angle/src/libANGLE/Device.cpp
gfx/angle/src/libANGLE/Device.h
gfx/angle/src/libANGLE/Display.cpp
gfx/angle/src/libANGLE/Display.h
gfx/angle/src/libANGLE/Error.cpp
gfx/angle/src/libANGLE/Error.h
gfx/angle/src/libANGLE/Error.inl
gfx/angle/src/libANGLE/Fence.cpp
gfx/angle/src/libANGLE/Fence.h
gfx/angle/src/libANGLE/Fence_unittest.cpp
gfx/angle/src/libANGLE/Framebuffer.cpp
gfx/angle/src/libANGLE/Framebuffer.h
gfx/angle/src/libANGLE/FramebufferAttachment.cpp
gfx/angle/src/libANGLE/FramebufferAttachment.h
gfx/angle/src/libANGLE/HandleAllocator.cpp
gfx/angle/src/libANGLE/HandleAllocator.h
gfx/angle/src/libANGLE/HandleAllocator_unittest.cpp
gfx/angle/src/libANGLE/HandleRangeAllocator.cpp
gfx/angle/src/libANGLE/HandleRangeAllocator.h
gfx/angle/src/libANGLE/HandleRangeAllocator_unittest.cpp
gfx/angle/src/libANGLE/Image.cpp
gfx/angle/src/libANGLE/Image.h
gfx/angle/src/libANGLE/ImageIndex.cpp
gfx/angle/src/libANGLE/ImageIndex.h
gfx/angle/src/libANGLE/ImageIndexIterator_unittest.cpp
gfx/angle/src/libANGLE/Image_unittest.cpp
gfx/angle/src/libANGLE/IndexRangeCache.cpp
gfx/angle/src/libANGLE/IndexRangeCache.h
gfx/angle/src/libANGLE/Path.cpp
gfx/angle/src/libANGLE/Path.h
gfx/angle/src/libANGLE/Platform.cpp
gfx/angle/src/libANGLE/Program.cpp
gfx/angle/src/libANGLE/Program.h
gfx/angle/src/libANGLE/Program_unittest.cpp
gfx/angle/src/libANGLE/Query.cpp
gfx/angle/src/libANGLE/Query.h
gfx/angle/src/libANGLE/RefCountObject.h
gfx/angle/src/libANGLE/Renderbuffer.cpp
gfx/angle/src/libANGLE/Renderbuffer.h
gfx/angle/src/libANGLE/ResourceManager.cpp
gfx/angle/src/libANGLE/ResourceManager.h
gfx/angle/src/libANGLE/ResourceManager_unittest.cpp
gfx/angle/src/libANGLE/Sampler.cpp
gfx/angle/src/libANGLE/Sampler.h
gfx/angle/src/libANGLE/Shader.cpp
gfx/angle/src/libANGLE/Shader.h
gfx/angle/src/libANGLE/State.cpp
gfx/angle/src/libANGLE/State.h
gfx/angle/src/libANGLE/Stream.cpp
gfx/angle/src/libANGLE/Stream.h
gfx/angle/src/libANGLE/Surface.cpp
gfx/angle/src/libANGLE/Surface.h
gfx/angle/src/libANGLE/Surface_unittest.cpp
gfx/angle/src/libANGLE/Texture.cpp
gfx/angle/src/libANGLE/Texture.h
gfx/angle/src/libANGLE/TransformFeedback.cpp
gfx/angle/src/libANGLE/TransformFeedback.h
gfx/angle/src/libANGLE/TransformFeedback_unittest.cpp
gfx/angle/src/libANGLE/Uniform.cpp
gfx/angle/src/libANGLE/Uniform.h
gfx/angle/src/libANGLE/Version.h
gfx/angle/src/libANGLE/Version.inl
gfx/angle/src/libANGLE/VertexArray.cpp
gfx/angle/src/libANGLE/VertexArray.h
gfx/angle/src/libANGLE/VertexAttribute.cpp
gfx/angle/src/libANGLE/VertexAttribute.h
gfx/angle/src/libANGLE/VertexAttribute.inl
gfx/angle/src/libANGLE/WorkerThread.cpp
gfx/angle/src/libANGLE/WorkerThread.h
gfx/angle/src/libANGLE/WorkerThread_unittest.cpp
gfx/angle/src/libANGLE/angletypes.cpp
gfx/angle/src/libANGLE/angletypes.h
gfx/angle/src/libANGLE/angletypes.inl
gfx/angle/src/libANGLE/features.h
gfx/angle/src/libANGLE/formatutils.cpp
gfx/angle/src/libANGLE/formatutils.h
gfx/angle/src/libANGLE/histogram_macros.h
gfx/angle/src/libANGLE/moz.build
gfx/angle/src/libANGLE/queryconversions.cpp
gfx/angle/src/libANGLE/queryconversions.h
gfx/angle/src/libANGLE/queryutils.cpp
gfx/angle/src/libANGLE/renderer/BufferImpl.h
gfx/angle/src/libANGLE/renderer/BufferImpl_mock.h
gfx/angle/src/libANGLE/renderer/CompilerImpl.h
gfx/angle/src/libANGLE/renderer/ContextImpl.cpp
gfx/angle/src/libANGLE/renderer/ContextImpl.h
gfx/angle/src/libANGLE/renderer/DeviceImpl.cpp
gfx/angle/src/libANGLE/renderer/DeviceImpl.h
gfx/angle/src/libANGLE/renderer/DisplayImpl.cpp
gfx/angle/src/libANGLE/renderer/DisplayImpl.h
gfx/angle/src/libANGLE/renderer/EGLImplFactory.h
gfx/angle/src/libANGLE/renderer/FenceNVImpl.h
gfx/angle/src/libANGLE/renderer/FenceSyncImpl.h
gfx/angle/src/libANGLE/renderer/Format.h
gfx/angle/src/libANGLE/renderer/Format_ID_autogen.inl
gfx/angle/src/libANGLE/renderer/FramebufferAttachmentObjectImpl.h
gfx/angle/src/libANGLE/renderer/FramebufferImpl.h
gfx/angle/src/libANGLE/renderer/FramebufferImpl_mock.h
gfx/angle/src/libANGLE/renderer/GLImplFactory.h
gfx/angle/src/libANGLE/renderer/ImageImpl.h
gfx/angle/src/libANGLE/renderer/ImageImpl_mock.h
gfx/angle/src/libANGLE/renderer/PathImpl.h
gfx/angle/src/libANGLE/renderer/ProgramImpl.h
gfx/angle/src/libANGLE/renderer/ProgramImpl_mock.h
gfx/angle/src/libANGLE/renderer/QueryImpl.h
gfx/angle/src/libANGLE/renderer/RenderbufferImpl.h
gfx/angle/src/libANGLE/renderer/RenderbufferImpl_mock.h
gfx/angle/src/libANGLE/renderer/SamplerImpl.h
gfx/angle/src/libANGLE/renderer/ShaderImpl.h
gfx/angle/src/libANGLE/renderer/StreamProducerImpl.h
gfx/angle/src/libANGLE/renderer/SurfaceImpl.cpp
gfx/angle/src/libANGLE/renderer/SurfaceImpl.h
gfx/angle/src/libANGLE/renderer/TextureImpl.cpp
gfx/angle/src/libANGLE/renderer/TextureImpl.h
gfx/angle/src/libANGLE/renderer/TextureImpl_mock.h
gfx/angle/src/libANGLE/renderer/TransformFeedbackImpl.h
gfx/angle/src/libANGLE/renderer/TransformFeedbackImpl_mock.h
gfx/angle/src/libANGLE/renderer/VertexArrayImpl.h
gfx/angle/src/libANGLE/renderer/angle_format.py
gfx/angle/src/libANGLE/renderer/angle_format_data.json
gfx/angle/src/libANGLE/renderer/angle_format_map.json
gfx/angle/src/libANGLE/renderer/d3d/BufferD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/BufferD3D.h
gfx/angle/src/libANGLE/renderer/d3d/CompilerD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/CompilerD3D.h
gfx/angle/src/libANGLE/renderer/d3d/DeviceD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/DeviceD3D.h
gfx/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/DisplayD3D.h
gfx/angle/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
gfx/angle/src/libANGLE/renderer/d3d/DynamicHLSL.h
gfx/angle/src/libANGLE/renderer/d3d/EGLImageD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/EGLImageD3D.h
gfx/angle/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/FramebufferD3D.h
gfx/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
gfx/angle/src/libANGLE/renderer/d3d/HLSLCompiler.h
gfx/angle/src/libANGLE/renderer/d3d/ImageD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/ImageD3D.h
gfx/angle/src/libANGLE/renderer/d3d/IndexBuffer.cpp
gfx/angle/src/libANGLE/renderer/d3d/IndexBuffer.h
gfx/angle/src/libANGLE/renderer/d3d/IndexDataManager.cpp
gfx/angle/src/libANGLE/renderer/d3d/IndexDataManager.h
gfx/angle/src/libANGLE/renderer/d3d/NativeWindowD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/NativeWindowD3D.h
gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
gfx/angle/src/libANGLE/renderer/d3d/RenderTargetD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/RenderTargetD3D.h
gfx/angle/src/libANGLE/renderer/d3d/RenderbufferD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/RenderbufferD3D.h
gfx/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/RendererD3D.h
gfx/angle/src/libANGLE/renderer/d3d/SamplerD3D.h
gfx/angle/src/libANGLE/renderer/d3d/ShaderD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/ShaderD3D.h
gfx/angle/src/libANGLE/renderer/d3d/ShaderExecutableD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/ShaderExecutableD3D.h
gfx/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h
gfx/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h
gfx/angle/src/libANGLE/renderer/d3d/TextureD3D.cpp
gfx/angle/src/libANGLE/renderer/d3d/TextureD3D.h
gfx/angle/src/libANGLE/renderer/d3d/TextureStorage.h
gfx/angle/src/libANGLE/renderer/d3d/VaryingPacking.cpp
gfx/angle/src/libANGLE/renderer/d3d/VaryingPacking.h
gfx/angle/src/libANGLE/renderer/d3d/VaryingPacking_unittest.cpp
gfx/angle/src/libANGLE/renderer/d3d/VertexBuffer.cpp
gfx/angle/src/libANGLE/renderer/d3d/VertexBuffer.h
gfx/angle/src/libANGLE/renderer/d3d/VertexDataManager.cpp
gfx/angle/src/libANGLE/renderer/d3d/VertexDataManager.h
gfx/angle/src/libANGLE/renderer/d3d/WorkaroundsD3D.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Blit11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Context11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Fence11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Fence11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Image11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Image11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Query11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/StateManager11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/StateManager11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/StreamProducerNV12.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/StreamProducerNV12.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/Trim11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/VertexArray11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/copyvertex.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/copyvertex.inl
gfx/angle/src/libANGLE/renderer/d3d/d3d11/dxgi_support_data.json
gfx/angle/src/libANGLE/renderer/d3d/d3d11/dxgi_support_table.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/dxgi_support_table.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/formatutils11.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/formatutils11.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/gen_dxgi_support_tables.py
gfx/angle/src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py
gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/BufferToTexture11.hlsl
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/Clear11.hlsl
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/Passthrough2D11.hlsl
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/Passthrough3D11.hlsl
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/ResolveDepthStencil.hlsl
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/Swizzle11.hlsl
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_gs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4f.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4i.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4ui.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_vs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/clearfloat11_fl9ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/clearfloat11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/clearfloat11vs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/clearsint11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/clearsint11vs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/clearuint11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/clearuint11vs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthrough3d11gs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthrough3d11vs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughdepth2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughlum2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughlum3d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughlumalpha2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughlumalpha3d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughr2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughr2di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughr2dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughr3d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughr3di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughr3dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrg2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrg2di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrg2dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrg3d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrg3di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrg3dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3di11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3dui11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbapremultiply2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbaunmultiply2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbpremultiply2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbunmultiply2d11ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepth11_ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepthstencil11_ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepthstencil11_vs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvestencil11_ps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzlef2darrayps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzlef2dps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzlef3dps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzlei2darrayps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzlei2dps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzlei3dps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzleui2darrayps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzleui2dps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzleui3dps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/shaders/generate_shaders.bat
gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_data.json
gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_map.json
gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_table.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_table.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_table_utils.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow_unittest.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
gfx/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow_unittest.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Blit9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Blit9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Buffer9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Buffer9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Context9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Fence9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Fence9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Image9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/NativeWindow9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/NativeWindow9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Query9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Query9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/RenderTarget9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/RenderTarget9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/ShaderCache.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/StateManager9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/StateManager9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/SwapChain9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/SwapChain9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/VertexArray9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/formatutils9.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/formatutils9.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
gfx/angle/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskpremultps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskunmultps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/flipyvs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminancepremultps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceunmultps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/passthroughps.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/standardvs.h
gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/generate_shaders.bat
gfx/angle/src/libANGLE/renderer/d3d/d3d9/vertexconversion.h
gfx/angle/src/libANGLE/renderer/d3d/formatutilsD3D.h
gfx/angle/src/libANGLE/renderer/d3d/hlsl/VaryingPacking.cpp
gfx/angle/src/libANGLE/renderer/d3d/hlsl/VaryingPacking.h
gfx/angle/src/libANGLE/renderer/d3d/hlsl/hlsl_utils.h
gfx/angle/src/libANGLE/renderer/gen_angle_format_table.py
gfx/angle/src/libANGLE/renderer/gen_load_functions_table.py
gfx/angle/src/libANGLE/renderer/gl/BlitGL.cpp
gfx/angle/src/libANGLE/renderer/gl/BlitGL.h
gfx/angle/src/libANGLE/renderer/gl/BufferGL.cpp
gfx/angle/src/libANGLE/renderer/gl/BufferGL.h
gfx/angle/src/libANGLE/renderer/gl/CompilerGL.cpp
gfx/angle/src/libANGLE/renderer/gl/CompilerGL.h
gfx/angle/src/libANGLE/renderer/gl/ContextGL.cpp
gfx/angle/src/libANGLE/renderer/gl/ContextGL.h
gfx/angle/src/libANGLE/renderer/gl/DisplayGL.cpp
gfx/angle/src/libANGLE/renderer/gl/DisplayGL.h
gfx/angle/src/libANGLE/renderer/gl/FeatureSupportGL.md
gfx/angle/src/libANGLE/renderer/gl/FenceNVGL.cpp
gfx/angle/src/libANGLE/renderer/gl/FenceNVGL.h
gfx/angle/src/libANGLE/renderer/gl/FenceSyncGL.cpp
gfx/angle/src/libANGLE/renderer/gl/FenceSyncGL.h
gfx/angle/src/libANGLE/renderer/gl/FramebufferGL.cpp
gfx/angle/src/libANGLE/renderer/gl/FramebufferGL.h
gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.cpp
gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h
gfx/angle/src/libANGLE/renderer/gl/PathGL.cpp
gfx/angle/src/libANGLE/renderer/gl/PathGL.h
gfx/angle/src/libANGLE/renderer/gl/ProgramGL.cpp
gfx/angle/src/libANGLE/renderer/gl/ProgramGL.h
gfx/angle/src/libANGLE/renderer/gl/QueryGL.cpp
gfx/angle/src/libANGLE/renderer/gl/QueryGL.h
gfx/angle/src/libANGLE/renderer/gl/RenderbufferGL.cpp
gfx/angle/src/libANGLE/renderer/gl/RenderbufferGL.h
gfx/angle/src/libANGLE/renderer/gl/RendererGL.cpp
gfx/angle/src/libANGLE/renderer/gl/RendererGL.h
gfx/angle/src/libANGLE/renderer/gl/SamplerGL.cpp
gfx/angle/src/libANGLE/renderer/gl/SamplerGL.h
gfx/angle/src/libANGLE/renderer/gl/ShaderGL.cpp
gfx/angle/src/libANGLE/renderer/gl/ShaderGL.h
gfx/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp
gfx/angle/src/libANGLE/renderer/gl/StateManagerGL.h
gfx/angle/src/libANGLE/renderer/gl/SurfaceGL.cpp
gfx/angle/src/libANGLE/renderer/gl/SurfaceGL.h
gfx/angle/src/libANGLE/renderer/gl/TextureGL.cpp
gfx/angle/src/libANGLE/renderer/gl/TextureGL.h
gfx/angle/src/libANGLE/renderer/gl/TransformFeedbackGL.cpp
gfx/angle/src/libANGLE/renderer/gl/TransformFeedbackGL.h
gfx/angle/src/libANGLE/renderer/gl/VertexArrayGL.cpp
gfx/angle/src/libANGLE/renderer/gl/VertexArrayGL.h
gfx/angle/src/libANGLE/renderer/gl/WorkaroundsGL.h
gfx/angle/src/libANGLE/renderer/gl/cgl/DisplayCGL.h
gfx/angle/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
gfx/angle/src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.h
gfx/angle/src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.mm
gfx/angle/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h
gfx/angle/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm
gfx/angle/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/DisplayEGL.h
gfx/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.h
gfx/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.h
gfx/angle/src/libANGLE/renderer/gl/egl/PbufferSurfaceEGL.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/PbufferSurfaceEGL.h
gfx/angle/src/libANGLE/renderer/gl/egl/SurfaceEGL.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/SurfaceEGL.h
gfx/angle/src/libANGLE/renderer/gl/egl/WindowSurfaceEGL.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/WindowSurfaceEGL.h
gfx/angle/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.h
gfx/angle/src/libANGLE/renderer/gl/egl/functionsegl_typedefs.h
gfx/angle/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.h
gfx/angle/src/libANGLE/renderer/gl/egl/ozone/SurfaceOzone.cpp
gfx/angle/src/libANGLE/renderer/gl/egl/ozone/SurfaceOzone.h
gfx/angle/src/libANGLE/renderer/gl/formatutilsgl.cpp
gfx/angle/src/libANGLE/renderer/gl/formatutilsgl.h
gfx/angle/src/libANGLE/renderer/gl/functionsgl_enums.h
gfx/angle/src/libANGLE/renderer/gl/functionsgl_typedefs.h
gfx/angle/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
gfx/angle/src/libANGLE/renderer/gl/glx/DisplayGLX.h
gfx/angle/src/libANGLE/renderer/gl/glx/FBConfigCompatibility.md
gfx/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp
gfx/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.h
gfx/angle/src/libANGLE/renderer/gl/glx/PbufferSurfaceGLX.cpp
gfx/angle/src/libANGLE/renderer/gl/glx/PbufferSurfaceGLX.h
gfx/angle/src/libANGLE/renderer/gl/glx/SurfaceGLX.h
gfx/angle/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp
gfx/angle/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.h
gfx/angle/src/libANGLE/renderer/gl/glx/functionsglx_typedefs.h
gfx/angle/src/libANGLE/renderer/gl/glx/platform_glx.h
gfx/angle/src/libANGLE/renderer/gl/renderergl_utils.cpp
gfx/angle/src/libANGLE/renderer/gl/renderergl_utils.h
gfx/angle/src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.cpp
gfx/angle/src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.h
gfx/angle/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
gfx/angle/src/libANGLE/renderer/gl/wgl/DisplayWGL.h
gfx/angle/src/libANGLE/renderer/gl/wgl/FunctionsWGL.cpp
gfx/angle/src/libANGLE/renderer/gl/wgl/FunctionsWGL.h
gfx/angle/src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.cpp
gfx/angle/src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.h
gfx/angle/src/libANGLE/renderer/gl/wgl/WindowSurfaceWGL.cpp
gfx/angle/src/libANGLE/renderer/gl/wgl/WindowSurfaceWGL.h
gfx/angle/src/libANGLE/renderer/gl/wgl/functionswgl_typedefs.h
gfx/angle/src/libANGLE/renderer/gl/wgl/wgl_utils.cpp
gfx/angle/src/libANGLE/renderer/gl/wgl/wgl_utils.h
gfx/angle/src/libANGLE/renderer/load_functions_data.json
gfx/angle/src/libANGLE/renderer/load_functions_table.h
gfx/angle/src/libANGLE/renderer/load_functions_table_autogen.cpp
gfx/angle/src/libANGLE/renderer/null/BufferNULL.cpp
gfx/angle/src/libANGLE/renderer/null/BufferNULL.h
gfx/angle/src/libANGLE/renderer/null/CompilerNULL.cpp
gfx/angle/src/libANGLE/renderer/null/ContextNULL.cpp
gfx/angle/src/libANGLE/renderer/null/ContextNULL.h
gfx/angle/src/libANGLE/renderer/null/DeviceNULL.cpp
gfx/angle/src/libANGLE/renderer/null/DisplayNULL.cpp
gfx/angle/src/libANGLE/renderer/null/DisplayNULL.h
gfx/angle/src/libANGLE/renderer/null/FenceSyncNULL.cpp
gfx/angle/src/libANGLE/renderer/null/FramebufferNULL.cpp
gfx/angle/src/libANGLE/renderer/null/ProgramNULL.cpp
gfx/angle/src/libANGLE/renderer/null/QueryNULL.cpp
gfx/angle/src/libANGLE/renderer/null/RenderbufferNULL.cpp
gfx/angle/src/libANGLE/renderer/null/ShaderNULL.cpp
gfx/angle/src/libANGLE/renderer/null/SurfaceNULL.cpp
gfx/angle/src/libANGLE/renderer/null/SurfaceNULL.h
gfx/angle/src/libANGLE/renderer/null/TextureNULL.cpp
gfx/angle/src/libANGLE/renderer/null/TransformFeedbackNULL.cpp
gfx/angle/src/libANGLE/renderer/renderer_utils.cpp
gfx/angle/src/libANGLE/renderer/renderer_utils.h
gfx/angle/src/libANGLE/renderer/vulkan/BufferVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/BufferVk.h
gfx/angle/src/libANGLE/renderer/vulkan/CompilerVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/CompilerVk.h
gfx/angle/src/libANGLE/renderer/vulkan/ContextVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/ContextVk.h
gfx/angle/src/libANGLE/renderer/vulkan/DeviceVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/DeviceVk.h
gfx/angle/src/libANGLE/renderer/vulkan/DisplayVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/DisplayVk.h
gfx/angle/src/libANGLE/renderer/vulkan/FenceNVVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/FenceNVVk.h
gfx/angle/src/libANGLE/renderer/vulkan/FenceSyncVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/FenceSyncVk.h
gfx/angle/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/FramebufferVk.h
gfx/angle/src/libANGLE/renderer/vulkan/ImageVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/ImageVk.h
gfx/angle/src/libANGLE/renderer/vulkan/ProgramVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/ProgramVk.h
gfx/angle/src/libANGLE/renderer/vulkan/QueryVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/QueryVk.h
gfx/angle/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/RenderbufferVk.h
gfx/angle/src/libANGLE/renderer/vulkan/RendererVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/RendererVk.h
gfx/angle/src/libANGLE/renderer/vulkan/SamplerVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/SamplerVk.h
gfx/angle/src/libANGLE/renderer/vulkan/ShaderVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/ShaderVk.h
gfx/angle/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/SurfaceVk.h
gfx/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/TextureVk.h
gfx/angle/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/TransformFeedbackVk.h
gfx/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
gfx/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.h
gfx/angle/src/libANGLE/signal_utils.cpp
gfx/angle/src/libANGLE/signal_utils.h
gfx/angle/src/libANGLE/signal_utils_unittest.cpp
gfx/angle/src/libANGLE/validationEGL.cpp
gfx/angle/src/libANGLE/validationEGL.h
gfx/angle/src/libANGLE/validationES.cpp
gfx/angle/src/libANGLE/validationES.h
gfx/angle/src/libANGLE/validationES2.cpp
gfx/angle/src/libANGLE/validationES2.h
gfx/angle/src/libANGLE/validationES3.cpp
gfx/angle/src/libANGLE/validationES3.h
gfx/angle/src/libANGLE/validationES31.cpp
gfx/angle/src/libANGLE/validationES31.h
gfx/angle/src/libANGLE/validationES_unittest.cpp
gfx/angle/src/libEGL.gypi
gfx/angle/src/libEGL/libEGL.cpp
gfx/angle/src/libEGL/libEGL.def
gfx/angle/src/libEGL/libEGL.rc
gfx/angle/src/libEGL/moz.build
gfx/angle/src/libEGL/resource.h
gfx/angle/src/libGLESv2.gypi
gfx/angle/src/libGLESv2/entry_points_egl.cpp
gfx/angle/src/libGLESv2/entry_points_egl.h
gfx/angle/src/libGLESv2/entry_points_egl_ext.cpp
gfx/angle/src/libGLESv2/entry_points_egl_ext.h
gfx/angle/src/libGLESv2/entry_points_gles_2_0.cpp
gfx/angle/src/libGLESv2/entry_points_gles_2_0.h
gfx/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
gfx/angle/src/libGLESv2/entry_points_gles_2_0_ext.h
gfx/angle/src/libGLESv2/entry_points_gles_3_0.cpp
gfx/angle/src/libGLESv2/entry_points_gles_3_0.h
gfx/angle/src/libGLESv2/entry_points_gles_3_1.cpp
gfx/angle/src/libGLESv2/entry_points_gles_3_1.h
gfx/angle/src/libGLESv2/global_state.cpp
gfx/angle/src/libGLESv2/global_state.h
gfx/angle/src/libGLESv2/libGLESv2.cpp
gfx/angle/src/libGLESv2/libGLESv2.def
gfx/angle/src/libGLESv2/libGLESv2.rc
gfx/angle/src/libGLESv2/moz.build
gfx/angle/src/libGLESv2/resource.h
gfx/angle/src/tests/BUILD.gn
gfx/angle/src/tests/WebGL-CTS-known-failures.txt
gfx/angle/src/tests/angle_end2end_tests.gypi
gfx/angle/src/tests/angle_end2end_tests_main.cpp
gfx/angle/src/tests/angle_perftests.gypi
gfx/angle/src/tests/angle_perftests_main.cpp
gfx/angle/src/tests/angle_unittests.gypi
gfx/angle/src/tests/angle_unittests_main.cpp
gfx/angle/src/tests/angle_unittests_utils.h
gfx/angle/src/tests/compiler_tests/API_test.cpp
gfx/angle/src/tests/compiler_tests/CollectVariables_test.cpp
gfx/angle/src/tests/compiler_tests/ConstantFoldingNaN_test.cpp
gfx/angle/src/tests/compiler_tests/ConstantFoldingOverflow_test.cpp
gfx/angle/src/tests/compiler_tests/ConstantFolding_test.cpp
gfx/angle/src/tests/compiler_tests/ConstructCompiler_test.cpp
gfx/angle/src/tests/compiler_tests/DebugShaderPrecision_test.cpp
gfx/angle/src/tests/compiler_tests/EXT_blend_func_extended_test.cpp
gfx/angle/src/tests/compiler_tests/EmulateGLFragColorBroadcast_test.cpp
gfx/angle/src/tests/compiler_tests/ExpressionLimit_test.cpp
gfx/angle/src/tests/compiler_tests/FloatLex_test.cpp
gfx/angle/src/tests/compiler_tests/FragDepth_test.cpp
gfx/angle/src/tests/compiler_tests/GLSLCompatibilityOutput_test.cpp
gfx/angle/src/tests/compiler_tests/IntermNode_test.cpp
gfx/angle/src/tests/compiler_tests/MalformedShader_test.cpp
gfx/angle/src/tests/compiler_tests/NV_draw_buffers_test.cpp
gfx/angle/src/tests/compiler_tests/Pack_Unpack_test.cpp
gfx/angle/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp
gfx/angle/src/tests/compiler_tests/PruneUnusedFunctions_test.cpp
gfx/angle/src/tests/compiler_tests/RecordConstantPrecision_test.cpp
gfx/angle/src/tests/compiler_tests/RemovePow_test.cpp
gfx/angle/src/tests/compiler_tests/ShCompile_test.cpp
gfx/angle/src/tests/compiler_tests/ShaderExtension_test.cpp
gfx/angle/src/tests/compiler_tests/ShaderVariable_test.cpp
gfx/angle/src/tests/compiler_tests/TypeTracking_test.cpp
gfx/angle/src/tests/compiler_tests/UnrollFlatten_test.cpp
gfx/angle/src/tests/compiler_tests/VariablePacker_test.cpp
gfx/angle/src/tests/compiler_tests/WorkGroupSize_test.cpp
gfx/angle/src/tests/deqp.gypi
gfx/angle/src/tests/deqp_support/angle_deqp_gtest.cpp
gfx/angle/src/tests/deqp_support/angle_deqp_gtest_main.cpp
gfx/angle/src/tests/deqp_support/angle_deqp_libtester.h
gfx/angle/src/tests/deqp_support/angle_deqp_libtester_main.cpp
gfx/angle/src/tests/deqp_support/angle_deqp_tests_main.cpp
gfx/angle/src/tests/deqp_support/deqp_egl_test_expectations.txt
gfx/angle/src/tests/deqp_support/deqp_gles2_test_expectations.txt
gfx/angle/src/tests/deqp_support/deqp_gles31_test_expectations.txt
gfx/angle/src/tests/deqp_support/deqp_gles3_test_expectations.txt
gfx/angle/src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp
gfx/angle/src/tests/deqp_support/tcuANGLENativeDisplayFactory.h
gfx/angle/src/tests/deqp_support/tcuANGLEPlatform.cpp
gfx/angle/src/tests/deqp_support/tcuANGLEPlatform.h
gfx/angle/src/tests/deqp_support/tcuRandomOrderExecutor.cpp
gfx/angle/src/tests/deqp_support/tcuRandomOrderExecutor.h
gfx/angle/src/tests/egl_tests/EGLContextCompatibilityTest.cpp
gfx/angle/src/tests/egl_tests/EGLContextSharingTest.cpp
gfx/angle/src/tests/egl_tests/EGLDeviceTest.cpp
gfx/angle/src/tests/egl_tests/EGLPresentPathD3D11Test.cpp
gfx/angle/src/tests/egl_tests/EGLQueryContextTest.cpp
gfx/angle/src/tests/egl_tests/EGLRobustnessTest.cpp
gfx/angle/src/tests/egl_tests/EGLSanityCheckTest.cpp
gfx/angle/src/tests/egl_tests/EGLStreamTest.cpp
gfx/angle/src/tests/egl_tests/EGLSurfaceTest.cpp
gfx/angle/src/tests/egl_tests/EGLThreadTest.cpp
gfx/angle/src/tests/egl_tests/EGLX11VisualTest.cpp
gfx/angle/src/tests/egl_tests/media/yuvtest.inl
gfx/angle/src/tests/gl_tests/BindUniformLocationTest.cpp
gfx/angle/src/tests/gl_tests/BlendMinMaxTest.cpp
gfx/angle/src/tests/gl_tests/BlitFramebufferANGLETest.cpp
gfx/angle/src/tests/gl_tests/BufferDataTest.cpp
gfx/angle/src/tests/gl_tests/BuiltinVariableTest.cpp
gfx/angle/src/tests/gl_tests/ClearTest.cpp
gfx/angle/src/tests/gl_tests/ColorMaskTest.cpp
gfx/angle/src/tests/gl_tests/ComputeShaderTest.cpp
gfx/angle/src/tests/gl_tests/CopyTexImageTest.cpp
gfx/angle/src/tests/gl_tests/CopyTextureTest.cpp
gfx/angle/src/tests/gl_tests/CubeMapTextureTest.cpp
gfx/angle/src/tests/gl_tests/D3D11EmulatedIndexedBufferTest.cpp
gfx/angle/src/tests/gl_tests/D3D11FormatTablesTest.cpp
gfx/angle/src/tests/gl_tests/D3D11InputLayoutCacheTest.cpp
gfx/angle/src/tests/gl_tests/D3DImageFormatConversionTest.cpp
gfx/angle/src/tests/gl_tests/DXT1CompressedTextureTest.cpp
gfx/angle/src/tests/gl_tests/DebugMarkerTest.cpp
gfx/angle/src/tests/gl_tests/DebugTest.cpp
gfx/angle/src/tests/gl_tests/DepthStencilFormatsTest.cpp
gfx/angle/src/tests/gl_tests/DifferentStencilMasksTest.cpp
gfx/angle/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp
gfx/angle/src/tests/gl_tests/DrawBuffersTest.cpp
gfx/angle/src/tests/gl_tests/DrawElementsTest.cpp
gfx/angle/src/tests/gl_tests/ETCTextureTest.cpp
gfx/angle/src/tests/gl_tests/FenceSyncTests.cpp
gfx/angle/src/tests/gl_tests/FramebufferMixedSamplesTest.cpp
gfx/angle/src/tests/gl_tests/FramebufferRenderMipmapTest.cpp
gfx/angle/src/tests/gl_tests/FramebufferTest.cpp
gfx/angle/src/tests/gl_tests/GLSLTest.cpp
gfx/angle/src/tests/gl_tests/ImageTest.cpp
gfx/angle/src/tests/gl_tests/IncompleteTextureTest.cpp
gfx/angle/src/tests/gl_tests/IndexBufferOffsetTest.cpp
gfx/angle/src/tests/gl_tests/IndexedPointsTest.cpp
gfx/angle/src/tests/gl_tests/InstancingTest.cpp
gfx/angle/src/tests/gl_tests/LineLoopTest.cpp
gfx/angle/src/tests/gl_tests/MaxTextureSizeTest.cpp
gfx/angle/src/tests/gl_tests/MipmapTest.cpp
gfx/angle/src/tests/gl_tests/MultisampleCompatibilityTest.cpp
gfx/angle/src/tests/gl_tests/ObjectAllocationTest.cpp
gfx/angle/src/tests/gl_tests/OcclusionQueriesTest.cpp
gfx/angle/src/tests/gl_tests/PBOExtensionTest.cpp
gfx/angle/src/tests/gl_tests/PackUnpackTest.cpp
gfx/angle/src/tests/gl_tests/PathRenderingTest.cpp
gfx/angle/src/tests/gl_tests/PbufferTest.cpp
gfx/angle/src/tests/gl_tests/PointSpritesTest.cpp
gfx/angle/src/tests/gl_tests/ProgramBinaryTest.cpp
gfx/angle/src/tests/gl_tests/ProvokingVertexTest.cpp
gfx/angle/src/tests/gl_tests/ReadPixelsTest.cpp
gfx/angle/src/tests/gl_tests/RendererTest.cpp
gfx/angle/src/tests/gl_tests/SRGBTextureTest.cpp
gfx/angle/src/tests/gl_tests/SimpleOperationTest.cpp
gfx/angle/src/tests/gl_tests/SixteenBppTextureTest.cpp
gfx/angle/src/tests/gl_tests/StateChangeTest.cpp
gfx/angle/src/tests/gl_tests/SwizzleTest.cpp
gfx/angle/src/tests/gl_tests/SyncQueriesTest.cpp
gfx/angle/src/tests/gl_tests/TextureTest.cpp
gfx/angle/src/tests/gl_tests/TimerQueriesTest.cpp
gfx/angle/src/tests/gl_tests/TransformFeedbackTest.cpp
gfx/angle/src/tests/gl_tests/UniformBufferTest.cpp
gfx/angle/src/tests/gl_tests/UniformTest.cpp
gfx/angle/src/tests/gl_tests/UnpackAlignmentTest.cpp
gfx/angle/src/tests/gl_tests/UnpackRowLength.cpp
gfx/angle/src/tests/gl_tests/VertexAttributeTest.cpp
gfx/angle/src/tests/gl_tests/ViewportTest.cpp
gfx/angle/src/tests/gl_tests/WebGLCompatibilityTest.cpp
gfx/angle/src/tests/gl_tests/media/pixel.inl
gfx/angle/src/tests/gles_conformance_tests/generate_gles_conformance_tests.py
gfx/angle/src/tests/gles_conformance_tests/gles_conformance_tests.cpp
gfx/angle/src/tests/gles_conformance_tests/gles_conformance_tests.h
gfx/angle/src/tests/gles_conformance_tests/gles_conformance_tests_main.cpp
gfx/angle/src/tests/perf_tests/ANGLEPerfTest.cpp
gfx/angle/src/tests/perf_tests/ANGLEPerfTest.h
gfx/angle/src/tests/perf_tests/BufferSubData.cpp
gfx/angle/src/tests/perf_tests/DrawCallPerf.cpp
gfx/angle/src/tests/perf_tests/DynamicPromotionPerfTest.cpp
gfx/angle/src/tests/perf_tests/EGLInitializePerf.cpp
gfx/angle/src/tests/perf_tests/IndexConversionPerf.cpp
gfx/angle/src/tests/perf_tests/IndexDataManagerTest.cpp
gfx/angle/src/tests/perf_tests/InstancingPerf.cpp
gfx/angle/src/tests/perf_tests/InterleavedAttributeData.cpp
gfx/angle/src/tests/perf_tests/LinkProgramPerfTest.cpp
gfx/angle/src/tests/perf_tests/PointSprites.cpp
gfx/angle/src/tests/perf_tests/TexSubImage.cpp
gfx/angle/src/tests/perf_tests/TextureSampling.cpp
gfx/angle/src/tests/perf_tests/UniformsPerf.cpp
gfx/angle/src/tests/perf_tests/third_party/perf/angle-mods.patch
gfx/angle/src/tests/perf_tests/third_party/perf/perf_test.cc
gfx/angle/src/tests/perf_tests/third_party/perf/perf_test.h
gfx/angle/src/tests/preprocessor_tests/MockDiagnostics.h
gfx/angle/src/tests/preprocessor_tests/MockDirectiveHandler.h
gfx/angle/src/tests/preprocessor_tests/PreprocessorTest.cpp
gfx/angle/src/tests/preprocessor_tests/PreprocessorTest.h
gfx/angle/src/tests/preprocessor_tests/char_test.cpp
gfx/angle/src/tests/preprocessor_tests/comment_test.cpp
gfx/angle/src/tests/preprocessor_tests/define_test.cpp
gfx/angle/src/tests/preprocessor_tests/error_test.cpp
gfx/angle/src/tests/preprocessor_tests/extension_test.cpp
gfx/angle/src/tests/preprocessor_tests/identifier_test.cpp
gfx/angle/src/tests/preprocessor_tests/if_test.cpp
gfx/angle/src/tests/preprocessor_tests/input_test.cpp
gfx/angle/src/tests/preprocessor_tests/location_test.cpp
gfx/angle/src/tests/preprocessor_tests/number_test.cpp
gfx/angle/src/tests/preprocessor_tests/operator_test.cpp
gfx/angle/src/tests/preprocessor_tests/pragma_test.cpp
gfx/angle/src/tests/preprocessor_tests/space_test.cpp
gfx/angle/src/tests/preprocessor_tests/token_test.cpp
gfx/angle/src/tests/preprocessor_tests/version_test.cpp
gfx/angle/src/tests/test_utils/ANGLETest.cpp
gfx/angle/src/tests/test_utils/ANGLETest.h
gfx/angle/src/tests/test_utils/ConstantFoldingTest.cpp
gfx/angle/src/tests/test_utils/ConstantFoldingTest.h
gfx/angle/src/tests/test_utils/angle_test_configs.cpp
gfx/angle/src/tests/test_utils/angle_test_configs.h
gfx/angle/src/tests/test_utils/angle_test_instantiate.cpp
gfx/angle/src/tests/test_utils/angle_test_instantiate.h
gfx/angle/src/tests/test_utils/compiler_test.cpp
gfx/angle/src/tests/test_utils/compiler_test.h
gfx/angle/src/tests/test_utils/gl_raii.h
gfx/angle/src/tests/tests.gyp
gfx/angle/src/tests/third_party/gpu_test_expectations/HowToMakeChanges.md
gfx/angle/src/tests/third_party/gpu_test_expectations/angle-mods.patch
gfx/angle/src/tests/third_party/gpu_test_expectations/angle_config.h
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_info.cc
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_info.h
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_test_config.cc
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_test_config.h
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_test_config_mac.h
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_test_config_mac.mm
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_test_expectations_parser.cc
gfx/angle/src/tests/third_party/gpu_test_expectations/gpu_test_expectations_parser.h
gfx/angle/src/tests/third_party/rapidjson/LICENSE
gfx/angle/src/tests/third_party/rapidjson/README.chromium
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/allocators.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/document.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/encodedstream.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/encodings.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/error/en.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/error/error.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/filereadstream.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/filestream.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/filewritestream.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/biginteger.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/diyfp.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/dtoa.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/ieee754.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/itoa.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/meta.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/pow10.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/stack.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/strfunc.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/internal/strtod.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/memorybuffer.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/memorystream.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/msinttypes/inttypes.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/msinttypes/stdint.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/prettywriter.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/rapidjson.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/reader.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/stringbuffer.h
gfx/angle/src/tests/third_party/rapidjson/include/rapidjson/writer.h
gfx/angle/src/third_party/compiler/ArrayBoundsClamper.cpp
gfx/angle/src/third_party/compiler/ArrayBoundsClamper.h
gfx/angle/src/third_party/compiler/LICENSE
gfx/angle/src/third_party/compiler/README.angle
gfx/angle/src/third_party/khronos/GL/wglext.h
gfx/angle/src/third_party/libXNVCtrl/BUILD.gn
gfx/angle/src/third_party/libXNVCtrl/LICENSE
gfx/angle/src/third_party/libXNVCtrl/NVCtrl.c
gfx/angle/src/third_party/libXNVCtrl/NVCtrl.h
gfx/angle/src/third_party/libXNVCtrl/NVCtrlLib.h
gfx/angle/src/third_party/libXNVCtrl/README.angle
gfx/angle/src/third_party/libXNVCtrl/libXNVCtrl.gyp
gfx/angle/src/third_party/libXNVCtrl/nv_control.h
gfx/angle/src/third_party/murmurhash/LICENSE
gfx/angle/src/third_party/murmurhash/MurmurHash3.cpp
gfx/angle/src/third_party/murmurhash/MurmurHash3.h
gfx/angle/src/third_party/systeminfo/SystemInfo.cpp
gfx/angle/src/third_party/systeminfo/SystemInfo.h
gfx/angle/src/third_party/trace_event/trace_event.h
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/BUILD.gn
+++ b/gfx/angle/BUILD.gn
@@ -314,16 +314,20 @@ static_library("libANGLE") {
 
   # Shared D3D sources.
   if (angle_enable_d3d9 || angle_enable_d3d11) {
     sources += rebase_path(gles_gypi.libangle_d3d_shared_sources, ".", "src")
 
     defines += [ "ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ " + "\"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }" ]
   }
 
+  if (angle_enable_hlsl) {
+    sources += rebase_path(gles_gypi.libangle_d3d_hlsl_sources, ".", "src")
+  }
+
   if (angle_enable_d3d9) {
     sources += rebase_path(gles_gypi.libangle_d3d9_sources, ".", "src")
     libs += [ "d3d9.lib" ]
   }
 
   if (angle_enable_d3d11) {
     sources += rebase_path(gles_gypi.libangle_d3d11_sources, ".", "src")
     sources += rebase_path(gles_gypi.libangle_d3d11_win32_sources, ".", "src")
old mode 100755
new mode 100644
--- a/gfx/angle/CONTRIBUTORS
+++ b/gfx/angle/CONTRIBUTORS
@@ -64,16 +64,18 @@ Intel Corporation
  Andy Chen
  Josh Triplett
  Sudarsana Nagineni
  Jiajia Qin
  Jiawei Shao
  Jie Chen
  Qiankun Miao
  Bryan Bernhart
+ Yunchao He
+ Xinghua Cao
 
 Klarälvdalens Datakonsult AB
  Milian Wolff
 
 Mozilla Corp.
  Ehsan Akhgari
  Edwin Flores
  Jeff Gilbert
old mode 100755
new mode 100644
--- a/gfx/angle/DEPS
+++ b/gfx/angle/DEPS
@@ -12,17 +12,17 @@ deps = {
   'testing/gmock':
     Var('chromium_git') + '/external/googlemock.git' + '@' + '0421b6f358139f02e102c9c332ce19a33faf75be', # from svn revision 566
 
   # Cherry is a dEQP management GUI written in Go. We use it for viewing test results.
   'third_party/cherry':
       'https://android.googlesource.com/platform/external/cherry' + '@' + 'd2e26b4d864ec2a6757e7f1174e464949ca5bf73',
 
   'third_party/deqp/src':
-      'https://android.googlesource.com/platform/external/deqp' + '@' + 'f4f3d8079e7a37d7675ab93583e6438d0bca0e58',
+      'https://android.googlesource.com/platform/external/deqp' + '@' + '455d82c60b096e7bd83b6a2f5ed70c61e4bfa759',
 
   'third_party/libpng':
       'https://android.googlesource.com/platform/external/libpng' + '@' + '094e181e79a3d6c23fd005679025058b7df1ad6c',
 
   'third_party/zlib':
       Var('chromium_git') + '/chromium/src/third_party/zlib' + '@' + 'afd8c4593c010c045902f6c0501718f1823064a3',
 
   'buildtools':
old mode 100755
new mode 100644
--- a/gfx/angle/DEPS.chromium
+++ b/gfx/angle/DEPS.chromium
@@ -6,17 +6,17 @@
 # build. The dual file setup is necessary because Chromium can only recurse into
 # a single file and we do not want to import all of ANGLE's standalone DEPS.
 #
 # If you make a change to one of these dependencies please also update the
 # standalone DEPS file.
 
 vars = {
   'android_git': 'https://android.googlesource.com',
-  'deqp_revision': 'f4f3d8079e7a37d7675ab93583e6438d0bca0e58',
+  'deqp_revision': '455d82c60b096e7bd83b6a2f5ed70c61e4bfa759',
 }
 
 deps_os = {
   'win': {
     'src/third_party/deqp/src':
       Var('android_git') + '/platform/external/deqp@' + Var('deqp_revision'),
   },
   'unix': {
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/Makefile.in
+++ b/gfx/angle/Makefile.in
@@ -4,12 +4,16 @@
 
 ifdef MOZ_ANGLE_RENDERER
 
 libs::
 ifdef MOZ_D3DCOMPILER_VISTA_DLL_PATH
 	cp -fp "$(MOZ_D3DCOMPILER_VISTA_DLL_PATH)" "$(DIST)/bin"
 endif
 
+ifdef MOZ_D3DCOMPILER_XP_CAB
+	expand '$(MOZ_D3DCOMPILER_XP_CAB)' -F:$(MOZ_D3DCOMPILER_XP_DLL) '$(DIST)/bin'
+endif
+
 endif
 
 include $(topsrcdir)/config/rules.mk
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/include/GLES2/gl2ext.h
+++ b/gfx/angle/include/GLES2/gl2ext.h
@@ -816,21 +816,23 @@ GL_APICALL void GL_APIENTRY glGetPerfMon
 #define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
 #define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
 typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
 #ifdef GL_GLEXT_PROTOTYPES
 GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
 #endif
 #endif /* GL_ANGLE_framebuffer_blit */
 
-#ifndef GL_ANGLE_webgl_compatibility
-#define GL_ANGLE_webgl_compatibility 1
-typedef GLboolean(GL_APIENTRYP PFNGLENABLEEXTENSIONANGLEPROC) (const GLchar *name);
+#ifndef GL_ANGLE_request_extension
+#define GL_ANGLE_request_extension 1
+#define GL_REQUESTABLE_EXTENSIONS_ANGLE   0x93A8
+#define GL_NUM_REQUESTABLE_EXTENSIONS_ANGLE 0x93A8
+typedef GLboolean(GL_APIENTRYP PFNGLREQUESTEXTENSIONANGLEPROC) (const GLchar *name);
 #ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLboolean GL_APIENTRY glEnableExtensionANGLE (const GLchar *name);
+GL_APICALL GLboolean GL_APIENTRY glRequestExtensionANGLE (const GLchar *name);
 #endif
 #endif /* GL_ANGLE_webgl_compatibility */
 
 #ifndef GL_CHROMIUM_framebuffer_mixed_samples
 #define GL_CHROMIUM_frambuffer_mixed_samples 1
 #define GL_COVERAGE_MODULATION_CHROMIUM 0x9332
 typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONCHROMIUMPROC) (GLenum components);
 #ifdef GL_GLEXT_PROTOTYPES
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/include/GLSLANG/ShaderLang.h
+++ b/gfx/angle/include/GLSLANG/ShaderLang.h
@@ -15,29 +15,22 @@
 #include <string>
 #include <vector>
 
 //
 // This is the platform independent interface between an OGL driver
 // and the shading language compiler.
 //
 
-namespace sh
-{
-// GLenum alias
-typedef unsigned int GLenum;
-}
-
-// Must be included after GLenum proxy typedef
 // Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h
 #include "ShaderVars.h"
 
 // Version number for shader translation API.
 // It is incremented every time the API changes.
-#define ANGLE_SH_VERSION 167
+#define ANGLE_SH_VERSION 168
 
 enum ShShaderSpec
 {
     SH_GLES2_SPEC,
     SH_WEBGL_SPEC,
 
     SH_GLES3_SPEC,
     SH_WEBGL2_SPEC,
@@ -67,32 +60,49 @@ enum ShShaderOutput
 
     // Prefer using these to specify HLSL output type:
     SH_HLSL_3_0_OUTPUT       = 0x8B48,  // D3D 9
     SH_HLSL_4_1_OUTPUT       = 0x8B49,  // D3D 11
     SH_HLSL_4_0_FL9_3_OUTPUT = 0x8B4A   // D3D 11 feature level 9_3
 };
 
 // Compile options.
-
-using ShCompileOptions = uint64_t;
+// The Compile options type is defined in ShaderVars.h, to allow ANGLE to import the ShaderVars
+// header without needing the ShaderLang header. This avoids some conflicts with glslang.
 
 const ShCompileOptions SH_VALIDATE                           = 0;
 const ShCompileOptions SH_VALIDATE_LOOP_INDEXING             = UINT64_C(1) << 0;
 const ShCompileOptions SH_INTERMEDIATE_TREE                  = UINT64_C(1) << 1;
 const ShCompileOptions SH_OBJECT_CODE                        = UINT64_C(1) << 2;
 const ShCompileOptions SH_VARIABLES                          = UINT64_C(1) << 3;
 const ShCompileOptions SH_LINE_DIRECTIVES                    = UINT64_C(1) << 4;
 const ShCompileOptions SH_SOURCE_PATH                        = UINT64_C(1) << 5;
-const ShCompileOptions SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX = UINT64_C(1) << 6;
-// If a sampler array index happens to be a loop index,
-//   1) if its type is integer, unroll the loop.
-//   2) if its type is float, fail the shader compile.
-// This is to work around a mac driver bug.
-const ShCompileOptions SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX = UINT64_C(1) << 7;
+
+// This flag will keep invariant declaration for input in fragment shader for GLSL >=4.20 on AMD.
+// From GLSL >= 4.20, it's optional to add invariant for fragment input, but GPU vendors have
+// different implementations about this. Some drivers forbid invariant in fragment for GLSL>= 4.20,
+// e.g. Linux Mesa, some drivers treat that as optional, e.g. NVIDIA, some drivers require invariant
+// must match between vertex and fragment shader, e.g. AMD. The behavior on AMD is obviously wrong.
+// Remove invariant for input in fragment shader to workaround the restriction on Intel Mesa.
+// But don't remove on AMD Linux to avoid triggering the bug on AMD.
+const ShCompileOptions SH_DONT_REMOVE_INVARIANT_FOR_FRAGMENT_INPUT = UINT64_C(1) << 6;
+
+// Due to spec difference between GLSL 4.1 or lower and ESSL3, some platforms (for example, Mac OSX
+// core profile) require a variable's "invariant"/"centroid" qualifiers to match between vertex and
+// fragment shader. A simple solution to allow such shaders to link is to omit the two qualifiers.
+// AMD driver in Linux requires invariant qualifier to match between vertex and fragment shaders,
+// while ESSL3 disallows invariant qualifier in fragment shader and GLSL >= 4.2 doesn't require
+// invariant qualifier to match between shaders. Remove invariant qualifier from vertex shader to
+// workaround AMD driver bug.
+// Note that the two flags take effect on ESSL3 input shaders translated to GLSL 4.1 or lower and to
+// GLSL 4.2 or newer on Linux AMD.
+// TODO(zmo): This is not a good long-term solution. Simply dropping these qualifiers may break some
+// developers' content. A more complex workaround of dynamically generating, compiling, and
+// re-linking shaders that use these qualifiers should be implemented.
+const ShCompileOptions SH_REMOVE_INVARIANT_AND_CENTROID_FOR_ESSL3 = UINT64_C(1) << 7;
 
 // This flag works around bug in Intel Mac drivers related to abs(i) where
 // i is an integer.
 const ShCompileOptions SH_EMULATE_ABS_INT_FUNCTION = UINT64_C(1) << 8;
 
 // Enforce the GLSL 1.017 Appendix A section 7 packing restrictions.
 // This flag only enforces (and can only enforce) the packing
 // restrictions for uniform variables in both vertex and fragment
@@ -188,34 +198,16 @@ const ShCompileOptions SH_EMULATE_ISNAN_
 // This flag will use all uniforms of unused std140 and shared uniform blocks at the
 // beginning of the vertex/fragment shader's main(). It is intended as a workaround for Mac
 // drivers with shader version 4.10. In those drivers, they will treat unused
 // std140 and shared uniform blocks' members as inactive. However, WebGL2.0 based on
 // OpenGL ES3.0.4 requires all members of a named uniform block declared with a shared or std140
 // layout qualifier to be considered active. The uniform block itself is also considered active.
 const ShCompileOptions SH_USE_UNUSED_STANDARD_SHARED_BLOCKS = UINT64_C(1) << 28;
 
-// This flag will keep invariant declaration for input in fragment shader for GLSL >=4.20 on AMD.
-// From GLSL >= 4.20, it's optional to add invariant for fragment input, but GPU vendors have
-// different implementations about this. Some drivers forbid invariant in fragment for GLSL>= 4.20,
-// e.g. Linux Mesa, some drivers treat that as optional, e.g. NVIDIA, some drivers require invariant
-// must match between vertex and fragment shader, e.g. AMD. The behavior on AMD is obviously wrong.
-// Remove invariant for input in fragment shader to workaround the restriction on Intel Mesa.
-// But don't remove on AMD Linux to avoid triggering the bug on AMD.
-const ShCompileOptions SH_DONT_REMOVE_INVARIANT_FOR_FRAGMENT_INPUT = UINT64_C(1) << 29;
-
-// Due to spec difference between GLSL 4.1 or lower and ESSL3, some platforms (for example, Mac OSX
-// core profile) require a variable's "invariant"/"centroid" qualifiers to match between vertex and
-// fragment shader. A simple solution to allow such shaders to link is to omit the two qualifiers.
-// Note that the two flags only take effect on ESSL3 input shaders translated to GLSL 4.1 or lower.
-// TODO(zmo): This is not a good long-term solution. Simply dropping these qualifiers may break some
-// developers' content. A more complex workaround of dynamically generating, compiling, and
-// re-linking shaders that use these qualifiers should be implemented.
-const ShCompileOptions SH_REMOVE_INVARIANT_AND_CENTROID_FOR_ESSL3 = UINT64_C(1) << 30;
-
 // Defines alternate strategies for implementing array index clamping.
 enum ShArrayIndexClampingStrategy
 {
     // Use the clamp intrinsic for array index clamping.
     SH_CLAMP_WITH_CLAMP_INTRINSIC = 1,
 
     // Use a user-defined function for array index clamping.
     SH_CLAMP_WITH_USER_DEFINED_INT_CLAMP_FUNCTION
old mode 100755
new mode 100644
--- a/gfx/angle/include/GLSLANG/ShaderVars.h
+++ b/gfx/angle/include/GLSLANG/ShaderVars.h
@@ -9,21 +9,23 @@
 
 #ifndef GLSLANG_SHADERVARS_H_
 #define GLSLANG_SHADERVARS_H_
 
 #include <algorithm>
 #include <string>
 #include <vector>
 
-// Assume ShaderLang.h is included before ShaderVars.h, for sh::GLenum
-// Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h
+// This type is defined here to simplify ANGLE's integration with glslang for SPIRv.
+using ShCompileOptions = uint64_t;
 
 namespace sh
 {
+// GLenum alias
+typedef unsigned int GLenum;
 
 // Varying interpolation qualifier, see section 4.3.9 of the ESSL 3.00.4 spec
 enum InterpolationType
 {
     INTERPOLATION_SMOOTH,
     INTERPOLATION_CENTROID,
     INTERPOLATION_FLAT
 };
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/moz.build
+++ b/gfx/angle/moz.build
@@ -45,28 +45,26 @@ UNIFIED_SOURCES += [
     'src/compiler/translator/ConstantUnion.cpp',
     'src/compiler/translator/DeferGlobalInitializers.cpp',
     'src/compiler/translator/Diagnostics.cpp',
     'src/compiler/translator/DirectiveHandler.cpp',
     'src/compiler/translator/EmulatePrecision.cpp',
     'src/compiler/translator/ExpandIntegerPowExpressions.cpp',
     'src/compiler/translator/ExtensionGLSL.cpp',
     'src/compiler/translator/FlagStd140Structs.cpp',
-    'src/compiler/translator/ForLoopUnroll.cpp',
     'src/compiler/translator/InfoSink.cpp',
     'src/compiler/translator/Initialize.cpp',
     'src/compiler/translator/InitializeDll.cpp',
     'src/compiler/translator/InitializeParseContext.cpp',
     'src/compiler/translator/InitializeVariables.cpp',
     'src/compiler/translator/Intermediate.cpp',
     'src/compiler/translator/IntermNode.cpp',
     'src/compiler/translator/IntermNodePatternMatcher.cpp',
     'src/compiler/translator/intermOut.cpp',
     'src/compiler/translator/IntermTraverse.cpp',
-    'src/compiler/translator/LoopInfo.cpp',
     'src/compiler/translator/Operator.cpp',
     'src/compiler/translator/OutputESSL.cpp',
     'src/compiler/translator/OutputGLSL.cpp',
     'src/compiler/translator/OutputGLSLBase.cpp',
     'src/compiler/translator/OutputHLSL.cpp',
     'src/compiler/translator/ParseContext.cpp',
     'src/compiler/translator/PoolAlloc.cpp',
     'src/compiler/translator/PruneEmptyDeclarations.cpp',
@@ -134,16 +132,19 @@ if CONFIG['GNU_CXX']:
             '-Wno-unused-private-field',
         ]
     else:
         CXXFLAGS += [
             '-Wno-shadow-compatible-local',
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
 if not CONFIG['MOZ_DEBUG']:
     DEFINES['_SECURE_SCL'] = 0
 
 DEFINES['ANGLE_ENABLE_D3D9'] = True
 DEFINES['ANGLE_SKIP_DXGI_1_2_CHECK'] = True
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/commit.h
+++ b/gfx/angle/src/commit.h
@@ -1,3 +1,3 @@
-#define ANGLE_COMMIT_HASH "2a250c8a0e15"
+#define ANGLE_COMMIT_HASH "dec065540d5f"
 #define ANGLE_COMMIT_HASH_SIZE 12
-#define ANGLE_COMMIT_DATE "2016-11-23 17:58:16 +0800"
+#define ANGLE_COMMIT_DATE "2017-04-10 16:10:11 +0800"
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/common/angleutils.h
+++ b/gfx/angle/src/common/angleutils.h
@@ -18,16 +18,20 @@
 #include <set>
 #include <sstream>
 #include <vector>
 
 // A helper class to disallow copy and assignment operators
 namespace angle
 {
 
+#if defined(ANBLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
+using Microsoft::WRL::ComPtr;
+#endif  // defined(ANBLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
+
 class NonCopyable
 {
   public:
     NonCopyable() = default;
     ~NonCopyable() = default;
   protected:
     NonCopyable(const NonCopyable&) = delete;
     void operator=(const NonCopyable&) = delete;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/common/debug.h
+++ b/gfx/angle/src/common/debug.h
@@ -138,37 +138,37 @@ std::ostream &DummyStream();
 #if defined(NDEBUG) && !defined(ANGLE_ENABLE_ASSERTS)
 #define ANGLE_ASSERTS_ON 0
 #else
 #define ANGLE_ASSERTS_ON 1
 #endif
 
 // A macro asserting a condition and outputting failures to the debug log
 #if ANGLE_ASSERTS_ON
-#define ASSERT(expression)                                                                        \
-    (expression ? static_cast<void>(0)                                                            \
-                : (ERR("\t! Assert failed in %s(%d): %s\n", __FUNCTION__, __LINE__, #expression), \
+#define ASSERT(expression)                                                                      \
+    (expression ? static_cast<void>(0)                                                          \
+                : (ERR("\t! Assert failed in %s(%d): %s", __FUNCTION__, __LINE__, #expression), \
                    ANGLE_ASSERT_IMPL(expression)))
 #else
 #define ASSERT(condition)                                                           \
     ANGLE_LAZY_STREAM(::gl::DummyStream(), ANGLE_ASSERTS_ON ? !(condition) : false) \
         << "Check failed: " #condition ". "
 #endif  // ANGLE_ASSERTS_ON
 
 #define UNUSED_VARIABLE(variable) ((void)variable)
 
 // A macro to indicate unimplemented functionality
 #ifndef NOASSERT_UNIMPLEMENTED
 #define NOASSERT_UNIMPLEMENTED 1
 #endif
 
-#define UNIMPLEMENTED()                                             \
-    {                                                               \
-        ERR("\t! Unimplemented: %s(%d)\n", __FUNCTION__, __LINE__); \
-        ASSERT(NOASSERT_UNIMPLEMENTED);                             \
-    }                                                               \
+#define UNIMPLEMENTED()                                           \
+    {                                                             \
+        ERR("\t! Unimplemented: %s(%d)", __FUNCTION__, __LINE__); \
+        ASSERT(NOASSERT_UNIMPLEMENTED);                           \
+    }                                                             \
     ANGLE_EMPTY_STATEMENT
 
 // A macro for code which is not expected to be reached under valid assumptions
 #define UNREACHABLE() \
-    (ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__), ASSERT(false))
+    (ERR("\t! Unreachable reached: %s(%d)", __FUNCTION__, __LINE__), ASSERT(false))
 
 #endif   // COMMON_DEBUG_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/common/mathutil.h
+++ b/gfx/angle/src/common/mathutil.h
@@ -28,36 +28,16 @@ using base::IsValueInRangeForNumericType
 }
 
 namespace gl
 {
 
 const unsigned int Float32One = 0x3F800000;
 const unsigned short Float16One = 0x3C00;
 
-struct Vector4
-{
-    Vector4() {}
-    Vector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {}
-
-    float x;
-    float y;
-    float z;
-    float w;
-};
-
-struct Vector2
-{
-    Vector2() {}
-    Vector2(float x, float y) : x(x), y(y) {}
-
-    float x;
-    float y;
-};
-
 inline bool isPow2(int x)
 {
     return (x & (x - 1)) == 0 && (x != 0);
 }
 
 inline int log2(int x)
 {
     int r = 0;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/common/platform.h
+++ b/gfx/angle/src/common/platform.h
@@ -60,16 +60,20 @@
 #       include <d3d10_1.h>
 #       include <d3d11.h>
 #       include <d3d11_1.h>
 #       include <dxgi.h>
 #       include <dxgi1_2.h>
 #       include <d3dcompiler.h>
 #   endif
 
+#if defined(ANBLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
+#include <wrl.h>
+#endif
+
 #   if defined(ANGLE_ENABLE_WINDOWS_STORE)
 #       include <dxgi1_3.h>
 #       if defined(_DEBUG)
 #           include <DXProgrammableCapture.h>
 #           include <dxgidebug.h>
 #       endif
 #   endif
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/common/vector_utils.h
@@ -0,0 +1,476 @@
+//
+// Copyright 2016 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.
+//
+// vector_utils.h: Utility classes implementing various vector operations
+
+#ifndef COMMON_VECTOR_UTILS_H_
+#define COMMON_VECTOR_UTILS_H_
+
+#include <cstddef>
+#include <cmath>
+#include <type_traits>
+
+namespace angle
+{
+
+template <size_t Dimension, typename Type>
+class Vector;
+
+using Vector2 = Vector<2, float>;
+using Vector3 = Vector<3, float>;
+using Vector4 = Vector<4, float>;
+
+using Vector2I = Vector<2, int>;
+using Vector3I = Vector<3, int>;
+using Vector4I = Vector<4, int>;
+
+using Vector2U = Vector<2, unsigned int>;
+using Vector3U = Vector<3, unsigned int>;
+using Vector4U = Vector<4, unsigned int>;
+
+template <size_t Dimension, typename Type>
+class VectorBase
+{
+  public:
+    using VectorN = Vector<Dimension, Type>;
+
+    // Constructors
+    VectorBase() = default;
+    explicit VectorBase(Type element);
+
+    template <typename Type2>
+    VectorBase(const VectorBase<Dimension, Type2> &other);
+
+    template <typename Arg1, typename Arg2, typename... Args>
+    VectorBase(const Arg1 &arg1, const Arg2 &arg2, const Args &... args);
+
+    // Access the vector backing storage directly
+    const Type *data() const { return mData; }
+    Type *data() { return mData; }
+    constexpr size_t size() const { return Dimension; }
+
+    // Load or store the pointer from / to raw data
+    static VectorN Load(const Type *source);
+    static void Store(const VectorN &source, Type *destination);
+
+    // Index the vector
+    Type &operator[](size_t i) { return mData[i]; }
+    const Type &operator[](size_t i) const { return mData[i]; }
+
+    // Basic arithmetic operations
+    VectorN operator+() const;
+    VectorN operator-() const;
+    VectorN operator+(const VectorN &other) const;
+    VectorN operator-(const VectorN &other) const;
+    VectorN operator*(const VectorN &other) const;
+    VectorN operator/(const VectorN &other) const;
+    VectorN operator*(Type other) const;
+    VectorN operator/(Type other) const;
+    friend VectorN operator*(Type a, const VectorN &b) { return b * a; }
+
+    // Compound arithmetic operations
+    VectorN &operator+=(const VectorN &other);
+    VectorN &operator-=(const VectorN &other);
+    VectorN &operator*=(const VectorN &other);
+    VectorN &operator/=(const VectorN &other);
+    VectorN &operator*=(Type other);
+    VectorN &operator/=(Type other);
+
+    // Comparison operators
+    bool operator==(const VectorN &other) const;
+    bool operator!=(const VectorN &other) const;
+
+    // Other arithmetic operations
+    Type length() const;
+    Type lengthSquared() const;
+    Type dot(const VectorN &other) const;
+    VectorN normalized() const;
+
+  protected:
+    template <size_t CurrentIndex, size_t OtherDimension, typename OtherType, typename... Args>
+    void initWithList(const Vector<OtherDimension, OtherType> &arg1, const Args &... args);
+
+    // Some old compilers consider this function an alternative for initWithList(Vector)
+    // when the variant above is more precise. Use SFINAE on the return value to hide
+    // this variant for non-arithmetic types. The return value is still void.
+    template <size_t CurrentIndex, typename OtherType, typename... Args>
+    typename std::enable_if<std::is_arithmetic<OtherType>::value>::type initWithList(
+        OtherType arg1,
+        const Args &... args);
+
+    template <size_t CurrentIndex>
+    void initWithList() const;
+
+    template <size_t Dimension2, typename Type2>
+    friend class VectorBase;
+
+    Type mData[Dimension];
+};
+
+template <typename Type>
+class Vector<2, Type> : public VectorBase<2, Type>
+{
+  public:
+    // Import the constructors defined in VectorBase
+    using VectorBase<2, Type>::VectorBase;
+
+    // Element shorthands
+    Type &x() { return this->mData[0]; }
+    Type &y() { return this->mData[1]; }
+
+    const Type &x() const { return this->mData[0]; }
+    const Type &y() const { return this->mData[1]; }
+};
+
+template <typename Type>
+class Vector<3, Type> : public VectorBase<3, Type>
+{
+  public:
+    // Import the constructors defined in VectorBase
+    using VectorBase<3, Type>::VectorBase;
+
+    // Additional operations
+    Vector<3, Type> cross(const Vector<3, Type> &other) const;
+
+    // Element shorthands
+    Type &x() { return this->mData[0]; }
+    Type &y() { return this->mData[1]; }
+    Type &z() { return this->mData[2]; }
+
+    const Type &x() const { return this->mData[0]; }
+    const Type &y() const { return this->mData[1]; }
+    const Type &z() const { return this->mData[2]; }
+};
+
+template <typename Type>
+class Vector<4, Type> : public VectorBase<4, Type>
+{
+  public:
+    // Import the constructors defined in VectorBase
+    using VectorBase<4, Type>::VectorBase;
+
+    // Element shorthands
+    Type &x() { return this->mData[0]; }
+    Type &y() { return this->mData[1]; }
+    Type &z() { return this->mData[2]; }
+    Type &w() { return this->mData[3]; }
+
+    const Type &x() const { return this->mData[0]; }
+    const Type &y() const { return this->mData[1]; }
+    const Type &z() const { return this->mData[2]; }
+    const Type &w() const { return this->mData[3]; }
+};
+
+// Implementation of constructors and misc operations
+
+template <size_t Dimension, typename Type>
+VectorBase<Dimension, Type>::VectorBase(Type element)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] = element;
+    }
+}
+
+template <size_t Dimension, typename Type>
+template <typename Type2>
+VectorBase<Dimension, Type>::VectorBase(const VectorBase<Dimension, Type2> &other)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] = static_cast<Type>(other.mData[i]);
+    }
+}
+
+// Ideally we would like to have only two constructors:
+//  - a scalar constructor that takes Type as a parameter
+//  - a compound constructor
+// However if we define the compound constructor for when it has a single arguments, then calling
+// Vector2(0.0) will be ambiguous. To solve this we take advantage of there being a single compound
+// constructor with a single argument, which is the copy constructor. We end up with three
+// constructors:
+//  - the scalar constructor
+//  - the copy constructor
+//  - the compound constructor for two or more arguments, hence the arg1, and arg2 here.
+template <size_t Dimension, typename Type>
+template <typename Arg1, typename Arg2, typename... Args>
+VectorBase<Dimension, Type>::VectorBase(const Arg1 &arg1, const Arg2 &arg2, const Args &... args)
+{
+    initWithList<0>(arg1, arg2, args...);
+}
+
+template <size_t Dimension, typename Type>
+template <size_t CurrentIndex, size_t OtherDimension, typename OtherType, typename... Args>
+void VectorBase<Dimension, Type>::initWithList(const Vector<OtherDimension, OtherType> &arg1,
+                                               const Args &... args)
+{
+    static_assert(CurrentIndex + OtherDimension <= Dimension,
+                  "Too much data in the vector constructor.");
+    for (size_t i = 0; i < OtherDimension; ++i)
+    {
+        mData[CurrentIndex + i] = static_cast<Type>(arg1.mData[i]);
+    }
+    initWithList<CurrentIndex + OtherDimension>(args...);
+}
+
+template <size_t Dimension, typename Type>
+template <size_t CurrentIndex, typename OtherType, typename... Args>
+typename std::enable_if<std::is_arithmetic<OtherType>::value>::type
+VectorBase<Dimension, Type>::initWithList(OtherType arg1, const Args &... args)
+{
+    static_assert(CurrentIndex + 1 <= Dimension, "Too much data in the vector constructor.");
+    mData[CurrentIndex] = static_cast<Type>(arg1);
+    initWithList<CurrentIndex + 1>(args...);
+}
+
+template <size_t Dimension, typename Type>
+template <size_t CurrentIndex>
+void VectorBase<Dimension, Type>::initWithList() const
+{
+    static_assert(CurrentIndex == Dimension, "Not enough data in the vector constructor.");
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::Load(const Type *source)
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = source[i];
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+void VectorBase<Dimension, Type>::Store(const Vector<Dimension, Type> &source, Type *destination)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        destination[i] = source.mData[i];
+    }
+}
+
+// Implementation of basic arithmetic operations
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator+() const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = +mData[i];
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator-() const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = -mData[i];
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator+(
+    const Vector<Dimension, Type> &other) const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = mData[i] + other.mData[i];
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator-(
+    const Vector<Dimension, Type> &other) const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = mData[i] - other.mData[i];
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator*(
+    const Vector<Dimension, Type> &other) const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = mData[i] * other.mData[i];
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator/(
+    const Vector<Dimension, Type> &other) const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = mData[i] / other.mData[i];
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator*(Type other) const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = mData[i] * other;
+    }
+    return result;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::operator/(Type other) const
+{
+    Vector<Dimension, Type> result;
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        result.mData[i] = mData[i] / other;
+    }
+    return result;
+}
+
+// Implementation of compound arithmetic operations
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> &VectorBase<Dimension, Type>::operator+=(
+    const Vector<Dimension, Type> &other)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] += other.mData[i];
+    }
+    return *reinterpret_cast<Vector<Dimension, Type> *>(this);
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> &VectorBase<Dimension, Type>::operator-=(
+    const Vector<Dimension, Type> &other)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] -= other.mData[i];
+    }
+    return *reinterpret_cast<Vector<Dimension, Type> *>(this);
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> &VectorBase<Dimension, Type>::operator*=(
+    const Vector<Dimension, Type> &other)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] *= other.mData[i];
+    }
+    return *reinterpret_cast<Vector<Dimension, Type> *>(this);
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> &VectorBase<Dimension, Type>::operator/=(
+    const Vector<Dimension, Type> &other)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] /= other.mData[i];
+    }
+    return *reinterpret_cast<Vector<Dimension, Type> *>(this);
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> &VectorBase<Dimension, Type>::operator*=(Type other)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] *= other;
+    }
+    return *reinterpret_cast<Vector<Dimension, Type> *>(this);
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> &VectorBase<Dimension, Type>::operator/=(Type other)
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        mData[i] /= other;
+    }
+    return *reinterpret_cast<Vector<Dimension, Type> *>(this);
+}
+
+// Implementation of comparison operators
+template <size_t Dimension, typename Type>
+bool VectorBase<Dimension, Type>::operator==(const Vector<Dimension, Type> &other) const
+{
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        if (mData[i] != other.mData[i])
+        {
+            return false;
+        }
+    }
+    return true;
+}
+
+template <size_t Dimension, typename Type>
+bool VectorBase<Dimension, Type>::operator!=(const Vector<Dimension, Type> &other) const
+{
+    return !(*this == other);
+}
+
+// Implementation of other arithmetic operations
+template <size_t Dimension, typename Type>
+Type VectorBase<Dimension, Type>::length() const
+{
+    static_assert(std::is_floating_point<Type>::value,
+                  "VectorN::length is only defined for floating point vectors");
+    return std::sqrt(lengthSquared());
+}
+
+template <size_t Dimension, typename Type>
+Type VectorBase<Dimension, Type>::lengthSquared() const
+{
+    return dot(*this);
+}
+
+template <size_t Dimension, typename Type>
+Type VectorBase<Dimension, Type>::dot(const Vector<Dimension, Type> &other) const
+{
+    Type sum = Type();
+    for (size_t i = 0; i < Dimension; ++i)
+    {
+        sum += mData[i] * other.mData[i];
+    }
+    return sum;
+}
+
+template <size_t Dimension, typename Type>
+Vector<Dimension, Type> VectorBase<Dimension, Type>::normalized() const
+{
+    static_assert(std::is_floating_point<Type>::value,
+                  "VectorN::normalized is only defined for floating point vectors");
+    return *this / length();
+}
+
+template <typename Type>
+Vector<3, Type> Vector<3, Type>::cross(const Vector<3, Type> &other) const
+{
+    return Vector<3, Type>(y() * other.z() - z() * other.y(), z() * other.x() - x() * other.z(),
+                           x() * other.y() - y() * other.x());
+}
+
+}  // namespace angle
+
+#endif  // COMMON_VECTOR_UTILS_H_
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/common/vector_utils_unittest.cpp
@@ -0,0 +1,225 @@
+//
+// Copyright 2016 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.
+//
+// vector_utils_unittests.cpp: Unit tests for the vector utils.
+//
+
+#include "vector_utils.h"
+
+#include <gtest/gtest.h>
+
+using namespace angle;
+
+namespace
+{
+
+// First test that comparing vectors work
+TEST(VectorUtilsTest, Comparison)
+{
+    // Don't use ASSERT_EQ at first because the == is more hidden
+    ASSERT_TRUE(Vector2(2.0, 3.0) == Vector2(2.0, 3.0));
+    ASSERT_TRUE(Vector2(2.0, 3.0) != Vector2(2.0, 4.0));
+
+    // Check ASSERT_EQ and ASSERT_NE work correctly
+    ASSERT_EQ(Vector2(2.0, 3.0), Vector2(2.0, 3.0));
+    ASSERT_NE(Vector2(2.0, 3.0), Vector2(2.0, 4.0));
+
+    // Check comparison works on all elements
+    ASSERT_EQ(Vector4(0.0), Vector4(0.0));
+    ASSERT_NE(Vector4(1.0, 0.0, 0.0, 0.0), Vector4(0.0));
+    ASSERT_NE(Vector4(0.0, 1.0, 0.0, 0.0), Vector4(0.0));
+    ASSERT_NE(Vector4(0.0, 0.0, 1.0, 0.0), Vector4(0.0));
+    ASSERT_NE(Vector4(0.0, 0.0, 0.0, 1.0), Vector4(0.0));
+}
+
+// Test indexing
+TEST(VectorUtilsTest, Indexing)
+{
+    Vector2 vec(1.0, 2.0);
+    ASSERT_EQ(1.0, vec[0]);
+    ASSERT_EQ(2.0, vec[1]);
+
+    vec[0] = 3.0;
+    vec[1] = 4.0;
+    ASSERT_EQ(Vector2(3.0, 4.0), vec);
+}
+
+// Test for the various constructors
+TEST(VectorUtilsTest, Constructors)
+{
+    // Constructor initializing all to a single element
+    {
+        Vector2 vec(3.0);
+        ASSERT_EQ(3.0, vec[0]);
+        ASSERT_EQ(3.0, vec[1]);
+    }
+
+    // Constructor initializing from another Vector
+    {
+        Vector2 vec(Vector2(1.0, 2.0));
+        ASSERT_EQ(1.0, vec[0]);
+        ASSERT_EQ(2.0, vec[1]);
+    }
+
+    // Mixed constructor
+    {
+        Vector4 vec(1.0, Vector2(2.0, 3.0), 4.0);
+        ASSERT_EQ(1.0, vec[0]);
+        ASSERT_EQ(2.0, vec[1]);
+        ASSERT_EQ(3.0, vec[2]);
+        ASSERT_EQ(4.0, vec[3]);
+    }
+}
+
+// Test accessing the data directly
+TEST(VectorUtilsTest, DataAccess)
+{
+    Vector2 vec(1.0, 2.0);
+    ASSERT_EQ(2u, vec.size());
+
+    ASSERT_EQ(1.0, vec.data()[0]);
+    ASSERT_EQ(2.0, vec.data()[1]);
+
+    vec.data()[0] = 3.0;
+    vec.data()[1] = 4.0;
+
+    ASSERT_EQ(Vector2(3.0, 4.0), vec);
+}
+
+// Test accessing the data directly
+TEST(VectorUtilsTest, LoadStore)
+{
+    float data[] = {1.0, 2.0};
+
+    Vector2 vec = Vector2::Load(data);
+
+    ASSERT_EQ(1.0, vec.data()[0]);
+    ASSERT_EQ(2.0, vec.data()[1]);
+
+    vec = Vector2(3.0, 4.0);
+    Vector2::Store(vec, data);
+
+    ASSERT_EQ(3.0, data[0]);
+    ASSERT_EQ(4.0, data[1]);
+}
+
+// Test basic arithmetic operations
+TEST(VectorUtilsTest, BasicArithmetic)
+{
+    ASSERT_EQ(Vector2(2.0, 3.0), +Vector2(2.0, 3.0));
+    ASSERT_EQ(Vector2(-2.0, -3.0), -Vector2(2.0, 3.0));
+    ASSERT_EQ(Vector2(4.0, 6.0), Vector2(1.0, 2.0) + Vector2(3.0, 4.0));
+    ASSERT_EQ(Vector2(-2.0, -2.0), Vector2(1.0, 2.0) - Vector2(3.0, 4.0));
+    ASSERT_EQ(Vector2(3.0, 8.0), Vector2(1.0, 2.0) * Vector2(3.0, 4.0));
+    ASSERT_EQ(Vector2(3.0, 2.0), Vector2(3.0, 4.0) / Vector2(1.0, 2.0));
+
+    ASSERT_EQ(Vector2(2.0, 4.0), Vector2(1.0, 2.0) * 2);
+    ASSERT_EQ(Vector2(2.0, 4.0), 2 * Vector2(1.0, 2.0));
+    ASSERT_EQ(Vector2(0.5, 1.0), Vector2(1.0, 2.0) / 2);
+}
+
+// Test compound arithmetic operations
+TEST(VectorUtilsTest, CompoundArithmetic)
+{
+    {
+        Vector2 vec(1.0, 2.0);
+        vec += Vector2(3.0, 4.0);
+        ASSERT_EQ(Vector2(4.0, 6.0), vec);
+    }
+    {
+        Vector2 vec(1.0, 2.0);
+        vec -= Vector2(3.0, 4.0);
+        ASSERT_EQ(Vector2(-2.0, -2.0), vec);
+    }
+    {
+        Vector2 vec(1.0, 2.0);
+        vec *= Vector2(3.0, 4.0);
+        ASSERT_EQ(Vector2(3.0, 8.0), vec);
+    }
+    {
+        Vector2 vec(3.0, 4.0);
+        vec /= Vector2(1.0, 2.0);
+        ASSERT_EQ(Vector2(3.0, 2.0), vec);
+    }
+    {
+        Vector2 vec(1.0, 2.0);
+        vec *= 2.0;
+        ASSERT_EQ(Vector2(2.0, 4.0), vec);
+    }
+    {
+        Vector2 vec(1.0, 2.0);
+        vec /= 2.0;
+        ASSERT_EQ(Vector2(0.5, 1.0), vec);
+    }
+}
+
+// Test other arithmetic operations
+TEST(VectorUtilsTest, OtherArithmeticOperations)
+{
+    Vector2 vec(3.0, 4.0);
+
+    ASSERT_EQ(25.0, vec.lengthSquared());
+    ASSERT_EQ(5.0, vec.length());
+    ASSERT_EQ(Vector2(0.6, 0.8), vec.normalized());
+
+    ASSERT_EQ(11.0, vec.dot(Vector2(1.0, 2.0)));
+}
+
+// Test element shortcuts
+TEST(VectorUtilsTest, ElementShortcuts)
+{
+    Vector2 vec2(1.0, 2.0);
+    Vector3 vec3(1.0, 2.0, 3.0);
+    Vector4 vec4(1.0, 2.0, 3.0, 4.0);
+
+    ASSERT_EQ(1.0, vec2.x());
+    ASSERT_EQ(1.0, vec3.x());
+    ASSERT_EQ(1.0, vec4.x());
+
+    ASSERT_EQ(2.0, vec2.y());
+    ASSERT_EQ(2.0, vec3.y());
+    ASSERT_EQ(2.0, vec4.y());
+
+    ASSERT_EQ(3.0, vec3.z());
+    ASSERT_EQ(3.0, vec4.z());
+
+    ASSERT_EQ(4.0, vec4.w());
+
+    vec2.x() = 0.0;
+    ASSERT_EQ(Vector2(0.0, 2.0), vec2);
+}
+
+// Test the cross product
+TEST(VectorUtilsTest, CrossProduct)
+{
+    ASSERT_EQ(Vector3(0.0, 0.0, 1.0), Vector3(1.0, 0.0, 0.0).cross(Vector3(0.0, 1.0, 0.0)));
+    ASSERT_EQ(Vector3(-3.0, 6.0, -3.0), Vector3(1.0, 2.0, 3.0).cross(Vector3(4.0, 5.0, 6.0)));
+}
+
+// Test basic functionality of int vectors
+TEST(VectorUtilsTest, IntVector)
+{
+    Vector2I vec(0);
+
+    int *data = vec.data();
+    data[1]   = 1;
+
+    ASSERT_EQ(0, vec[0]);
+    ASSERT_EQ(1, vec[1]);
+}
+
+// Test basic functionality of int vectors
+TEST(VectorUtilsTest, UIntVector)
+{
+    Vector2U vec(0);
+
+    unsigned int *data = vec.data();
+    data[1]            = 1;
+
+    ASSERT_EQ(0u, vec[0]);
+    ASSERT_EQ(1u, vec[1]);
+}
+
+}  // anonymous namespace
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler.gypi
+++ b/gfx/angle/src/compiler.gypi
@@ -49,18 +49,16 @@
             'compiler/translator/EmulateGLFragColorBroadcast.h',
             'compiler/translator/EmulatePrecision.cpp',
             'compiler/translator/EmulatePrecision.h',
             'compiler/translator/ExpandIntegerPowExpressions.cpp',
             'compiler/translator/ExpandIntegerPowExpressions.h',
             'compiler/translator/ExtensionBehavior.h',
             'compiler/translator/FlagStd140Structs.cpp',
             'compiler/translator/FlagStd140Structs.h',
-            'compiler/translator/ForLoopUnroll.cpp',
-            'compiler/translator/ForLoopUnroll.h',
             'compiler/translator/HashNames.h',
             'compiler/translator/InfoSink.cpp',
             'compiler/translator/InfoSink.h',
             'compiler/translator/Initialize.cpp',
             'compiler/translator/Initialize.h',
             'compiler/translator/InitializeDll.cpp',
             'compiler/translator/InitializeDll.h',
             'compiler/translator/InitializeGlobals.h',
@@ -68,19 +66,16 @@
             'compiler/translator/InitializeParseContext.h',
             'compiler/translator/InitializeVariables.cpp',
             'compiler/translator/InitializeVariables.h',
             'compiler/translator/IntermNode.h',
             'compiler/translator/IntermNode.cpp',
             'compiler/translator/IntermTraverse.cpp',
             'compiler/translator/Intermediate.h',
             'compiler/translator/Intermediate.cpp',
-            'compiler/translator/LoopInfo.cpp',
-            'compiler/translator/LoopInfo.h',
-            'compiler/translator/MMap.h',
             'compiler/translator/NodeSearch.h',
             'compiler/translator/Operator.cpp',
             'compiler/translator/Operator.h',
             'compiler/translator/ParseContext.cpp',
             'compiler/translator/ParseContext.h',
             'compiler/translator/PoolAlloc.cpp',
             'compiler/translator/PoolAlloc.h',
             'compiler/translator/Pragma.h',
--- a/gfx/angle/src/compiler/fuzz/translator_fuzzer.cpp
+++ b/gfx/angle/src/compiler/fuzz/translator_fuzzer.cpp
@@ -137,16 +137,17 @@ extern "C" int LLVMFuzzerTestOneInput(co
         resources.EXT_blend_func_extended         = 1;
         resources.EXT_draw_buffers                = 1;
         resources.EXT_frag_depth                  = 1;
         resources.EXT_shader_texture_lod          = 1;
         resources.WEBGL_debug_shader_precision    = 1;
         resources.EXT_shader_framebuffer_fetch    = 1;
         resources.NV_shader_framebuffer_fetch     = 1;
         resources.ARM_shader_framebuffer_fetch    = 1;
+        resources.MaxDualSourceDrawBuffers        = 1;
 
         if (!translator->Init(resources))
         {
             DeleteCompiler(translator);
             return 0;
         }
 
         translators[key] = translator;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.cpp
+++ b/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.cpp
@@ -77,16 +77,18 @@ std::string Diagnostics::message(ID id)
       case PP_MACRO_UNDEFINED_WHILE_INVOKED:
           return "macro undefined while being invoked";
       case PP_MACRO_TOO_FEW_ARGS:
         return "Not enough arguments for macro";
       case PP_MACRO_TOO_MANY_ARGS:
         return "Too many arguments for macro";
       case PP_MACRO_DUPLICATE_PARAMETER_NAMES:
         return "duplicate macro parameter name";
+      case PP_MACRO_INVOCATION_CHAIN_TOO_DEEP:
+          return "macro invocation chain too deep";
       case PP_CONDITIONAL_ENDIF_WITHOUT_IF:
         return "unexpected #endif found without a matching #if";
       case PP_CONDITIONAL_ELSE_WITHOUT_IF:
         return "unexpected #else found without a matching #if";
       case PP_CONDITIONAL_ELSE_AFTER_ELSE:
         return "unexpected #else found after another #else";
       case PP_CONDITIONAL_ELIF_WITHOUT_IF:
         return "unexpected #elif found without a matching #if";
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h
+++ b/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h
@@ -43,16 +43,17 @@ class Diagnostics
         PP_MACRO_REDEFINED,
         PP_MACRO_PREDEFINED_REDEFINED,
         PP_MACRO_PREDEFINED_UNDEFINED,
         PP_MACRO_UNTERMINATED_INVOCATION,
         PP_MACRO_UNDEFINED_WHILE_INVOKED,
         PP_MACRO_TOO_FEW_ARGS,
         PP_MACRO_TOO_MANY_ARGS,
         PP_MACRO_DUPLICATE_PARAMETER_NAMES,
+        PP_MACRO_INVOCATION_CHAIN_TOO_DEEP,
         PP_CONDITIONAL_ENDIF_WITHOUT_IF,
         PP_CONDITIONAL_ELSE_WITHOUT_IF,
         PP_CONDITIONAL_ELSE_AFTER_ELSE,
         PP_CONDITIONAL_ELIF_WITHOUT_IF,
         PP_CONDITIONAL_ELIF_AFTER_ELSE,
         PP_CONDITIONAL_UNTERMINATED,
         PP_CONDITIONAL_UNEXPECTED_TOKEN,
         PP_INVALID_EXTENSION_NAME,
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/DirectiveParser.cpp
+++ b/gfx/angle/src/compiler/preprocessor/DirectiveParser.cpp
@@ -197,24 +197,26 @@ class DefinedParser : public Lexer
     Lexer *mLexer;
     const MacroSet *mMacroSet;
     Diagnostics *mDiagnostics;
 };
 
 DirectiveParser::DirectiveParser(Tokenizer *tokenizer,
                                  MacroSet *macroSet,
                                  Diagnostics *diagnostics,
-                                 DirectiveHandler *directiveHandler)
+                                 DirectiveHandler *directiveHandler,
+                                 int maxMacroExpansionDepth)
     : mPastFirstStatement(false),
       mSeenNonPreprocessorToken(false),
       mTokenizer(tokenizer),
       mMacroSet(macroSet),
       mDiagnostics(diagnostics),
       mDirectiveHandler(directiveHandler),
-      mShaderVersion(100)
+      mShaderVersion(100),
+      mMaxMacroExpansionDepth(maxMacroExpansionDepth)
 {
 }
 
 void DirectiveParser::lex(Token *token)
 {
     do
     {
         mTokenizer->lex(token);
@@ -838,17 +840,17 @@ void DirectiveParser::parseVersion(Token
 void DirectiveParser::parseLine(Token *token)
 {
     ASSERT(getDirective(token) == DIRECTIVE_LINE);
 
     bool valid = true;
     bool parsedFileNumber = false;
     int line = 0, file = 0;
 
-    MacroExpander macroExpander(mTokenizer, mMacroSet, mDiagnostics);
+    MacroExpander macroExpander(mTokenizer, mMacroSet, mDiagnostics, mMaxMacroExpansionDepth);
 
     // Lex the first token after "#line" so we can check it for EOD.
     macroExpander.lex(token);
 
     if (isEOD(token))
     {
         mDiagnostics->report(Diagnostics::PP_INVALID_LINE_DIRECTIVE, token->location, token->text);
         valid = false;
@@ -947,17 +949,17 @@ void DirectiveParser::parseConditionalIf
     mConditionalStack.push_back(block);
 }
 
 int DirectiveParser::parseExpressionIf(Token *token)
 {
     ASSERT((getDirective(token) == DIRECTIVE_IF) || (getDirective(token) == DIRECTIVE_ELIF));
 
     DefinedParser definedParser(mTokenizer, mMacroSet, mDiagnostics);
-    MacroExpander macroExpander(&definedParser, mMacroSet, mDiagnostics);
+    MacroExpander macroExpander(&definedParser, mMacroSet, mDiagnostics, mMaxMacroExpansionDepth);
     ExpressionParser expressionParser(&macroExpander, mDiagnostics);
 
     int expression = 0;
     ExpressionParser::ErrorSettings errorSettings;
     errorSettings.integerLiteralsMustFit32BitSignedRange = false;
     errorSettings.unexpectedIdentifier                   = Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN;
 
     bool valid = true;
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/DirectiveParser.h
+++ b/gfx/angle/src/compiler/preprocessor/DirectiveParser.h
@@ -19,17 +19,18 @@ class DirectiveHandler;
 class Tokenizer;
 
 class DirectiveParser : public Lexer
 {
   public:
     DirectiveParser(Tokenizer *tokenizer,
                     MacroSet *macroSet,
                     Diagnostics *diagnostics,
-                    DirectiveHandler *directiveHandler);
+                    DirectiveHandler *directiveHandler,
+                    int maxMacroExpansionDepth);
 
     void lex(Token *token) override;
 
   private:
 
     void parseDirective(Token *token);
     void parseDefine(Token *token);
     void parseUndef(Token *token);
@@ -71,13 +72,14 @@ class DirectiveParser : public Lexer
     bool mSeenNonPreprocessorToken; // Tracks if a non-preprocessor token has been seen yet.  Some macros, such as
                                     // #extension must be declared before all shader code.
     std::vector<ConditionalBlock> mConditionalStack;
     Tokenizer *mTokenizer;
     MacroSet *mMacroSet;
     Diagnostics *mDiagnostics;
     DirectiveHandler *mDirectiveHandler;
     int mShaderVersion;
+    int mMaxMacroExpansionDepth;
 };
 
 }  // namespace pp
 
 #endif  // COMPILER_PREPROCESSOR_DIRECTIVEPARSER_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/MacroExpander.cpp
+++ b/gfx/angle/src/compiler/preprocessor/MacroExpander.cpp
@@ -72,27 +72,32 @@ MacroExpander::ScopedMacroReenabler::~Sc
     mExpander->mDeferReenablingMacros = false;
     for (auto *macro : mExpander->mMacrosToReenable)
     {
         macro->disabled = false;
     }
     mExpander->mMacrosToReenable.clear();
 }
 
-MacroExpander::MacroExpander(Lexer *lexer, MacroSet *macroSet, Diagnostics *diagnostics)
+MacroExpander::MacroExpander(Lexer *lexer,
+                             MacroSet *macroSet,
+                             Diagnostics *diagnostics,
+                             int allowedMacroExpansionDepth)
     : mLexer(lexer),
       mMacroSet(macroSet),
       mDiagnostics(diagnostics),
       mTotalTokensInContexts(0),
+      mAllowedMacroExpansionDepth(allowedMacroExpansionDepth),
       mDeferReenablingMacros(false)
 {
 }
 
 MacroExpander::~MacroExpander()
 {
+    ASSERT(mMacrosToReenable.empty());
     for (MacroContext *context : mContextStack)
     {
         delete context;
     }
 }
 
 void MacroExpander::lex(Token *token)
 {
@@ -371,17 +376,23 @@ bool MacroExpander::collectMacroArgs(con
 
     // Pre-expand each argument before substitution.
     // This step expands each argument individually before they are
     // inserted into the macro body.
     size_t numTokens = 0;
     for (auto &arg : *args)
     {
         TokenLexer lexer(&arg);
-        MacroExpander expander(&lexer, mMacroSet, mDiagnostics);
+        if (mAllowedMacroExpansionDepth < 1)
+        {
+            mDiagnostics->report(Diagnostics::PP_MACRO_INVOCATION_CHAIN_TOO_DEEP, token.location,
+                                 token.text);
+            return false;
+        }
+        MacroExpander expander(&lexer, mMacroSet, mDiagnostics, mAllowedMacroExpansionDepth - 1);
 
         arg.clear();
         expander.lex(&token);
         while (token.type != Token::LAST)
         {
             arg.push_back(token);
             expander.lex(&token);
             numTokens++;
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/MacroExpander.h
+++ b/gfx/angle/src/compiler/preprocessor/MacroExpander.h
@@ -17,17 +17,20 @@ namespace pp
 {
 
 class Diagnostics;
 struct SourceLocation;
 
 class MacroExpander : public Lexer
 {
   public:
-    MacroExpander(Lexer *lexer, MacroSet *macroSet, Diagnostics *diagnostics);
+    MacroExpander(Lexer *lexer,
+                  MacroSet *macroSet,
+                  Diagnostics *diagnostics,
+                  int allowedMacroExpansionDepth);
     ~MacroExpander() override;
 
     void lex(Token *token) override;
 
   private:
     void getToken(Token *token);
     void ungetToken(const Token &token);
     bool isNextTokenLeftParen();
@@ -63,16 +66,18 @@ class MacroExpander : public Lexer
     Lexer *mLexer;
     MacroSet *mMacroSet;
     Diagnostics *mDiagnostics;
 
     std::unique_ptr<Token> mReserveToken;
     std::vector<MacroContext *> mContextStack;
     size_t mTotalTokensInContexts;
 
+    int mAllowedMacroExpansionDepth;
+
     bool mDeferReenablingMacros;
     std::vector<const Macro *> mMacrosToReenable;
 
     class ScopedMacroReenabler;
 };
 
 }  // namespace pp
 
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/Preprocessor.cpp
+++ b/gfx/angle/src/compiler/preprocessor/Preprocessor.cpp
@@ -20,29 +20,36 @@ namespace pp
 struct PreprocessorImpl
 {
     Diagnostics *diagnostics;
     MacroSet macroSet;
     Tokenizer tokenizer;
     DirectiveParser directiveParser;
     MacroExpander macroExpander;
 
-    PreprocessorImpl(Diagnostics *diag, DirectiveHandler *directiveHandler)
+    PreprocessorImpl(Diagnostics *diag,
+                     DirectiveHandler *directiveHandler,
+                     const PreprocessorSettings &settings)
         : diagnostics(diag),
           tokenizer(diag),
-          directiveParser(&tokenizer, &macroSet, diag, directiveHandler),
-          macroExpander(&directiveParser, &macroSet, diag)
+          directiveParser(&tokenizer,
+                          &macroSet,
+                          diag,
+                          directiveHandler,
+                          settings.maxMacroExpansionDepth),
+          macroExpander(&directiveParser, &macroSet, diag, settings.maxMacroExpansionDepth)
     {
     }
 };
 
 Preprocessor::Preprocessor(Diagnostics *diagnostics,
-                           DirectiveHandler *directiveHandler)
+                           DirectiveHandler *directiveHandler,
+                           const PreprocessorSettings &settings)
 {
-    mImpl = new PreprocessorImpl(diagnostics, directiveHandler);
+    mImpl = new PreprocessorImpl(diagnostics, directiveHandler, settings);
 }
 
 Preprocessor::~Preprocessor()
 {
     delete mImpl;
 }
 
 bool Preprocessor::init(size_t count,
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/preprocessor/Preprocessor.h
+++ b/gfx/angle/src/compiler/preprocessor/Preprocessor.h
@@ -14,20 +14,28 @@
 namespace pp
 {
 
 class Diagnostics;
 class DirectiveHandler;
 struct PreprocessorImpl;
 struct Token;
 
+struct PreprocessorSettings : angle::NonCopyable
+{
+    PreprocessorSettings() : maxMacroExpansionDepth(1000) {}
+    int maxMacroExpansionDepth;
+};
+
 class Preprocessor : angle::NonCopyable
 {
   public:
-    Preprocessor(Diagnostics *diagnostics, DirectiveHandler *directiveHandler);
+    Preprocessor(Diagnostics *diagnostics,
+                 DirectiveHandler *directiveHandler,
+                 const PreprocessorSettings &settings);
     ~Preprocessor();
 
     // count: specifies the number of elements in the string and length arrays.
     // string: specifies an array of pointers to strings.
     // length: specifies an array of string lengths.
     // If length is NULL, each string is assumed to be null terminated.
     // If length is a value other than NULL, it points to an array containing
     // a string length for each of the corresponding elements of string.
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp
+++ b/gfx/angle/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp
@@ -68,16 +68,18 @@ void InitBuiltInIsnanFunctionEmulatorFor
         "{\n"
         "    bvec4 isnan;\n"
         "    for (int i = 0; i < 4; i++)\n"
         "    {\n"
         "        isnan[i] = (x[i] > 0.0 || x[i] < 0.0) ? false : x[i] != 0.0;\n"
         "    }\n"
         "    return isnan;\n"
         "}\n");
+    emu->addEmulatedFunction(EOpFaceForward, float1, float1, float1, "#define webgl_faceforward_emu(N, I, Nref) (((Nref) * (I) < 0.0) ? (N) : -(N))");
+
 }
 
 // Emulate built-in functions missing from GLSL 1.30 and higher
 void InitBuiltInFunctionEmulatorForGLSLMissingFunctions(BuiltInFunctionEmulator *emu, sh::GLenum shaderType,
                                                         int targetGLSLVersion)
 {
     // Emulate packUnorm2x16 and unpackUnorm2x16 (GLSL 4.10)
     if (targetGLSLVersion < GLSL_VERSION_410)
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/Compiler.cpp
+++ b/gfx/angle/src/compiler/translator/Compiler.cpp
@@ -11,17 +11,16 @@
 #include "angle_gl.h"
 #include "common/utilities.h"
 #include "compiler/translator/AddAndTrueToLoopCondition.h"
 #include "compiler/translator/Cache.h"
 #include "compiler/translator/CallDAG.h"
 #include "compiler/translator/DeferGlobalInitializers.h"
 #include "compiler/translator/EmulateGLFragColorBroadcast.h"
 #include "compiler/translator/EmulatePrecision.h"
-#include "compiler/translator/ForLoopUnroll.h"
 #include "compiler/translator/Initialize.h"
 #include "compiler/translator/InitializeParseContext.h"
 #include "compiler/translator/InitializeVariables.h"
 #include "compiler/translator/ParseContext.h"
 #include "compiler/translator/PruneEmptyDeclarations.h"
 #include "compiler/translator/RegenerateStructNames.h"
 #include "compiler/translator/RemoveInvariantDeclaration.h"
 #include "compiler/translator/RemovePow.h"
@@ -108,25 +107,25 @@ bool RemoveInvariant(sh::GLenum shaderTy
                      ShShaderOutput outputType,
                      ShCompileOptions compileOptions)
 {
     if ((compileOptions & SH_DONT_REMOVE_INVARIANT_FOR_FRAGMENT_INPUT) == 0 &&
         shaderType == GL_FRAGMENT_SHADER && IsGLSL420OrNewer(outputType))
         return true;
 
     if ((compileOptions & SH_REMOVE_INVARIANT_AND_CENTROID_FOR_ESSL3) != 0 &&
-        shaderVersion >= 300 && shaderType == GL_VERTEX_SHADER && IsGLSL410OrOlder(outputType))
+        shaderVersion >= 300 && shaderType == GL_VERTEX_SHADER)
         return true;
 
     return false;
 }
 
 size_t GetGlobalMaxTokenSize(ShShaderSpec spec)
 {
-    // WebGL defines a max token legnth of 256, while ES2 leaves max token
+    // WebGL defines a max token length of 256, while ES2 leaves max token
     // size undefined. ES3 defines a max size of 1024 characters.
     switch (spec)
     {
         case SH_WEBGL_SPEC:
             return 256;
         default:
             return 1024;
     }
@@ -365,36 +364,16 @@ TIntermBlock *TCompiler::compileTreeImpl
             if (!EmulatePrecision::SupportedInLanguage(outputType))
             {
                 infoSink.info.prefix(EPrefixError);
                 infoSink.info << "Precision emulation not supported for this output type.";
                 success = false;
             }
         }
 
-        // Unroll for-loop markup needs to happen after validateLimitations pass.
-        if (success && (compileOptions & SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX))
-        {
-            ForLoopUnrollMarker marker(ForLoopUnrollMarker::kIntegerIndex,
-                                       shouldRunLoopAndIndexingValidation(compileOptions));
-            root->traverse(&marker);
-        }
-        if (success && (compileOptions & SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX))
-        {
-            ForLoopUnrollMarker marker(ForLoopUnrollMarker::kSamplerArrayIndex,
-                                       shouldRunLoopAndIndexingValidation(compileOptions));
-            root->traverse(&marker);
-            if (marker.samplerArrayIndexIsFloatLoopIndex())
-            {
-                infoSink.info.prefix(EPrefixError);
-                infoSink.info << "sampler array index is float loop index";
-                success = false;
-            }
-        }
-
         // Built-in function emulation needs to happen after validateLimitations pass.
         if (success)
         {
             // TODO(jmadill): Remove global pool allocator.
             GetGlobalPoolAllocator()->lock();
             initBuiltInFunctionEmulator(&builtInFunctionEmulator, compileOptions);
             GetGlobalPoolAllocator()->unlock();
             builtInFunctionEmulator.MarkBuiltInFunctionsForEmulation(root);
@@ -501,27 +480,16 @@ bool TCompiler::compile(const char *cons
 
     // Apply key workarounds.
     if (shouldFlattenPragmaStdglInvariantAll())
     {
         // This should be harmless to do in all cases, but for the moment, do it only conditionally.
         compileOptions |= SH_FLATTEN_PRAGMA_STDGL_INVARIANT_ALL;
     }
 
-    ShCompileOptions unrollFlags =
-        SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX | SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX;
-    if ((compileOptions & SH_ADD_AND_TRUE_TO_LOOP_CONDITION) != 0 &&
-        (compileOptions & unrollFlags) != 0)
-    {
-        infoSink.info.prefix(EPrefixError);
-        infoSink.info
-            << "Unsupported compile flag combination: unroll & ADD_TRUE_TO_LOOP_CONDITION";
-        return false;
-    }
-
     TScopedPoolAllocator scopedAlloc(&allocator);
     TIntermBlock *root = compileTreeImpl(shaderStrings, numStrings, compileOptions);
 
     if (root)
     {
         if (compileOptions & SH_INTERMEDIATE_TREE)
             TIntermediate::outputTree(root, infoSink.info);
 
@@ -532,16 +500,25 @@ bool TCompiler::compile(const char *cons
         // memory will be freed in a big chunk by the PoolAllocator.
         return true;
     }
     return false;
 }
 
 bool TCompiler::InitBuiltInSymbolTable(const ShBuiltInResources &resources)
 {
+    if (resources.MaxDrawBuffers < 1)
+    {
+        return false;
+    }
+    if (resources.EXT_blend_func_extended && resources.MaxDualSourceDrawBuffers < 1)
+    {
+        return false;
+    }
+
     compileResources = resources;
     setResourceString();
 
     assert(symbolTable.isEmpty());
     symbolTable.push();   // COMMON_BUILTINS
     symbolTable.push();   // ESSL1_BUILTINS
     symbolTable.push();   // ESSL3_BUILTINS
     symbolTable.push();   // ESSL3_1_BUILTINS
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/ConstantUnion.cpp
+++ b/gfx/angle/src/compiler/translator/ConstantUnion.cpp
@@ -2,72 +2,65 @@
 // Copyright 2016 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.
 //
 // ConstantUnion: Constant folding helper class.
 
 #include "compiler/translator/ConstantUnion.h"
 
-#include "base/numerics/safe_math.h"
 #include "common/mathutil.h"
 #include "compiler/translator/Diagnostics.h"
 
 namespace sh
 {
 
 namespace
 {
 
-template <typename T>
-T CheckedSum(base::CheckedNumeric<T> lhs,
-             base::CheckedNumeric<T> rhs,
-             TDiagnostics *diag,
-             const TSourceLoc &line)
+float CheckedSum(float lhs, float rhs, TDiagnostics *diag, const TSourceLoc &line)
 {
-    ASSERT(lhs.IsValid() && rhs.IsValid());
-    auto result = lhs + rhs;
-    if (!result.IsValid())
+    float result = lhs + rhs;
+    if (gl::isNaN(result) && !gl::isNaN(lhs) && !gl::isNaN(rhs))
     {
-        diag->error(line, "Addition out of range", "*", "");
-        return 0;
+        diag->warning(line, "Constant folded undefined addition generated NaN", "+", "");
     }
-    return result.ValueOrDefault(0);
+    else if (gl::isInf(result) && !gl::isInf(lhs) && !gl::isInf(rhs))
+    {
+        diag->warning(line, "Constant folded addition overflowed to infinity", "+", "");
+    }
+    return result;
 }
 
-template <typename T>
-T CheckedDiff(base::CheckedNumeric<T> lhs,
-              base::CheckedNumeric<T> rhs,
-              TDiagnostics *diag,
-              const TSourceLoc &line)
+float CheckedDiff(float lhs, float rhs, TDiagnostics *diag, const TSourceLoc &line)
 {
-    ASSERT(lhs.IsValid() && rhs.IsValid());
-    auto result = lhs - rhs;
-    if (!result.IsValid())
+    float result = lhs - rhs;
+    if (gl::isNaN(result) && !gl::isNaN(lhs) && !gl::isNaN(rhs))
     {
-        diag->error(line, "Difference out of range", "*", "");
-        return 0;
+        diag->warning(line, "Constant folded undefined subtraction generated NaN", "-", "");
     }
-    return result.ValueOrDefault(0);
+    else if (gl::isInf(result) && !gl::isInf(lhs) && !gl::isInf(rhs))
+    {
+        diag->warning(line, "Constant folded subtraction overflowed to infinity", "-", "");
+    }
+    return result;
 }
 
-template <typename T>
-T CheckedMul(base::CheckedNumeric<T> lhs,
-             base::CheckedNumeric<T> rhs,
-             TDiagnostics *diag,
-             const TSourceLoc &line)
+float CheckedMul(float lhs, float rhs, TDiagnostics *diag, const TSourceLoc &line)
 {
-    ASSERT(lhs.IsValid() && rhs.IsValid());
-    auto result = lhs * rhs;
-    if (!result.IsValid())
+    float result = lhs * rhs;
+    if (gl::isNaN(result) && !gl::isNaN(lhs) && !gl::isNaN(rhs))
     {
-        diag->error(line, "Multiplication out of range", "*", "");
-        return 0;
+        diag->warning(line, "Constant folded undefined multiplication generated NaN", "*", "");
     }
-    return result.ValueOrDefault(0);
+    else if (gl::isInf(result) && !gl::isInf(lhs) && !gl::isInf(rhs))
+    {
+        diag->warning(line, "Constant folded multiplication overflowed to infinity", "*", "");
+    }
+    return result;
 }
 
 }  // anonymous namespace
 
 TConstantUnion::TConstantUnion()
 {
     iConst = 0;
     type   = EbtVoid;
@@ -288,17 +281,17 @@ TConstantUnion TConstantUnion::add(const
     {
         case EbtInt:
             returnValue.setIConst(gl::WrappingSum<int>(lhs.iConst, rhs.iConst));
             break;
         case EbtUInt:
             returnValue.setUConst(gl::WrappingSum<unsigned int>(lhs.uConst, rhs.uConst));
             break;
         case EbtFloat:
-            returnValue.setFConst(CheckedSum<float>(lhs.fConst, rhs.fConst, diag, line));
+            returnValue.setFConst(CheckedSum(lhs.fConst, rhs.fConst, diag, line));
             break;
         default:
             UNREACHABLE();
     }
 
     return returnValue;
 }
 
@@ -314,17 +307,17 @@ TConstantUnion TConstantUnion::sub(const
     {
         case EbtInt:
             returnValue.setIConst(gl::WrappingDiff<int>(lhs.iConst, rhs.iConst));
             break;
         case EbtUInt:
             returnValue.setUConst(gl::WrappingDiff<unsigned int>(lhs.uConst, rhs.uConst));
             break;
         case EbtFloat:
-            returnValue.setFConst(CheckedDiff<float>(lhs.fConst, rhs.fConst, diag, line));
+            returnValue.setFConst(CheckedDiff(lhs.fConst, rhs.fConst, diag, line));
             break;
         default:
             UNREACHABLE();
     }
 
     return returnValue;
 }
 
@@ -342,17 +335,17 @@ TConstantUnion TConstantUnion::mul(const
             returnValue.setIConst(gl::WrappingMul(lhs.iConst, rhs.iConst));
             break;
         case EbtUInt:
             // Unsigned integer math in C++ is defined to be done in modulo 2^n, so we rely on that
             // to implement wrapping multiplication.
             returnValue.setUConst(lhs.uConst * rhs.uConst);
             break;
         case EbtFloat:
-            returnValue.setFConst(CheckedMul<float>(lhs.fConst, rhs.fConst, diag, line));
+            returnValue.setFConst(CheckedMul(lhs.fConst, rhs.fConst, diag, line));
             break;
         default:
             UNREACHABLE();
     }
 
     return returnValue;
 }
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
deleted file mode 100755
--- a/gfx/angle/src/compiler/translator/ForLoopUnroll.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// 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 "compiler/translator/ForLoopUnroll.h"
-
-#include "compiler/translator/ValidateLimitations.h"
-#include "angle_gl.h"
-
-namespace sh
-{
-
-bool ForLoopUnrollMarker::visitBinary(Visit, TIntermBinary *node)
-{
-    if (mUnrollCondition != kSamplerArrayIndex)
-        return true;
-
-    // If a sampler array index is also the loop index,
-    //   1) if the index type is integer, mark the loop for unrolling;
-    //   2) if the index type if float, set a flag to later fail compile.
-    switch (node->getOp())
-    {
-      case EOpIndexIndirect:
-        if (node->getLeft() != NULL && node->getRight() != NULL && node->getLeft()->getAsSymbolNode())
-        {
-            TIntermSymbol *symbol = node->getLeft()->getAsSymbolNode();
-            if (IsSampler(symbol->getBasicType()) && symbol->isArray() && !mLoopStack.empty())
-            {
-                mVisitSamplerArrayIndexNodeInsideLoop = true;
-                node->getRight()->traverse(this);
-                mVisitSamplerArrayIndexNodeInsideLoop = false;
-                // We have already visited all the children.
-                return false;
-            }
-        }
-        break;
-      default:
-        break;
-    }
-    return true;
-}
-
-bool ForLoopUnrollMarker::visitLoop(Visit, TIntermLoop *node)
-{
-    bool canBeUnrolled = mHasRunLoopValidation;
-    if (!mHasRunLoopValidation)
-    {
-        canBeUnrolled = ValidateLimitations::IsLimitedForLoop(node);
-    }
-    if (mUnrollCondition == kIntegerIndex && canBeUnrolled)
-    {
-        // Check if loop index type is integer.
-        // This is called after ValidateLimitations pass, so the loop has the limited form specified
-        // in ESSL 1.00 appendix A.
-        TIntermSequence *declSeq = node->getInit()->getAsDeclarationNode()->getSequence();
-        TIntermSymbol *symbol = (*declSeq)[0]->getAsBinaryNode()->getLeft()->getAsSymbolNode();
-        if (symbol->getBasicType() == EbtInt)
-            node->setUnrollFlag(true);
-    }
-
-    TIntermNode *body = node->getBody();
-    if (body != nullptr)
-    {
-        if (canBeUnrolled)
-        {
-            mLoopStack.push(node);
-            body->traverse(this);
-            mLoopStack.pop();
-        }
-        else
-        {
-            body->traverse(this);
-        }
-    }
-    // The loop is fully processed - no need to visit children.
-    return false;
-}
-
-void ForLoopUnrollMarker::visitSymbol(TIntermSymbol* symbol)
-{
-    if (!mVisitSamplerArrayIndexNodeInsideLoop)
-        return;
-    TIntermLoop *loop = mLoopStack.findLoop(symbol);
-    if (loop)
-    {
-        switch (symbol->getBasicType())
-        {
-          case EbtFloat:
-            mSamplerArrayIndexIsFloatLoopIndex = true;
-            break;
-          case EbtInt:
-            loop->setUnrollFlag(true);
-            break;
-          default:
-            UNREACHABLE();
-        }
-    }
-}
-
-}  // namespace sh
deleted file mode 100755
--- a/gfx/angle/src/compiler/translator/ForLoopUnroll.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// Copyright (c) 2011 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_TRANSLATOR_FORLOOPUNROLL_H_
-#define COMPILER_TRANSLATOR_FORLOOPUNROLL_H_
-
-#include "compiler/translator/LoopInfo.h"
-
-namespace sh
-{
-
-// This class detects for-loops that needs to be unrolled.
-// Currently we support two unroll conditions:
-//   1) kForLoopWithIntegerIndex: unroll if the index type is integer.
-//   2) kForLoopWithSamplerArrayIndex: unroll where a sampler array index
-//      is also the loop integer index, and reject and fail a compile
-//      where a sampler array index is also the loop float index.
-class ForLoopUnrollMarker : public TIntermTraverser
-{
-  public:
-    enum UnrollCondition
-    {
-        kIntegerIndex,
-        kSamplerArrayIndex
-    };
-
-    ForLoopUnrollMarker(UnrollCondition condition, bool hasRunLoopValidation)
-        : TIntermTraverser(true, false, false),
-          mUnrollCondition(condition),
-          mSamplerArrayIndexIsFloatLoopIndex(false),
-          mVisitSamplerArrayIndexNodeInsideLoop(false),
-          mHasRunLoopValidation(hasRunLoopValidation)
-    {
-    }
-
-    bool visitBinary(Visit, TIntermBinary *node) override;
-    bool visitLoop(Visit, TIntermLoop *node) override;
-    void visitSymbol(TIntermSymbol *node) override;
-
-    bool samplerArrayIndexIsFloatLoopIndex() const
-    {
-        return mSamplerArrayIndexIsFloatLoopIndex;
-    }
-
-  private:
-    UnrollCondition mUnrollCondition;
-    TLoopStack mLoopStack;
-    bool mSamplerArrayIndexIsFloatLoopIndex;
-    bool mVisitSamplerArrayIndexNodeInsideLoop;
-    bool mHasRunLoopValidation;
-};
-
-}  // namespace sh
-
-#endif // COMPILER_TRANSLATOR_FORLOOPUNROLL_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/Initialize.cpp
+++ b/gfx/angle/src/compiler/translator/Initialize.cpp
@@ -486,17 +486,17 @@ void InsertBuiltInFunctions(sh::GLenum t
     symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimage2D, int2);
     symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimage3D, int3);
     symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimage2DArray, int3);
     symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimageCube, int3);
 
     symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int2, "imageSize", gimage2D);
     symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int3, "imageSize", gimage3D);
     symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int3, "imageSize", gimage2DArray);
-    symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int3, "imageSize", gimageCube);
+    symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int2, "imageSize", gimageCube);
 
     //
     // Depth range in window coordinates
     //
     TFieldList *fields = NewPoolTFieldList();
     TSourceLoc zeroSourceLoc = {0, 0, 0, 0};
     auto highpFloat1         = new TType(EbtFloat, EbpHigh, EvqGlobal, 1);
     TField *near             = new TField(highpFloat1, NewPoolTString("near"), zeroSourceLoc);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/IntermNode.cpp
+++ b/gfx/angle/src/compiler/translator/IntermNode.cpp
@@ -1307,29 +1307,61 @@ TConstantUnion *TIntermConstantUnion::fo
       case EOpIMod:
         {
             resultArray = new TConstantUnion[objectSize];
             for (size_t i = 0; i < objectSize; i++)
             {
                 switch (getType().getBasicType())
                 {
                   case EbtFloat:
-                    if (rightArray[i] == 0.0f)
-                    {
-                        diagnostics->warning(
-                            getLine(), "Divide by zero error during constant folding", "/", "");
-                        resultArray[i].setFConst(leftArray[i].getFConst() < 0 ? -FLT_MAX : FLT_MAX);
-                    }
-                    else
-                    {
-                        ASSERT(op == EOpDiv);
-                        resultArray[i].setFConst(leftArray[i].getFConst() / rightArray[i].getFConst());
-                    }
-                    break;
-
+                  {
+                      ASSERT(op == EOpDiv);
+                      float dividend = leftArray[i].getFConst();
+                      float divisor  = rightArray[i].getFConst();
+                      if (divisor == 0.0f)
+                      {
+                          if (dividend == 0.0f)
+                          {
+                              diagnostics->warning(
+                                  getLine(),
+                                  "Zero divided by zero during constant folding generated NaN", "/",
+                                  "");
+                              resultArray[i].setFConst(std::numeric_limits<float>::quiet_NaN());
+                          }
+                          else
+                          {
+                              diagnostics->warning(
+                                  getLine(), "Divide by zero during constant folding", "/", "");
+                              bool negativeResult = std::signbit(dividend) != std::signbit(divisor);
+                              resultArray[i].setFConst(
+                                  negativeResult ? -std::numeric_limits<float>::infinity()
+                                                 : std::numeric_limits<float>::infinity());
+                          }
+                      }
+                      else if (gl::isInf(dividend) && gl::isInf(divisor))
+                      {
+                          diagnostics->warning(
+                              getLine(),
+                              "Infinity divided by infinity during constant folding generated NaN",
+                              "/", "");
+                          resultArray[i].setFConst(std::numeric_limits<float>::quiet_NaN());
+                      }
+                      else
+                      {
+                          float result = dividend / divisor;
+                          if (!gl::isInf(dividend) && gl::isInf(result))
+                          {
+                              diagnostics->warning(
+                                  getLine(), "Constant folded division overflowed to infinity", "/",
+                                  "");
+                          }
+                          resultArray[i].setFConst(result);
+                      }
+                      break;
+                  }
                   case EbtInt:
                     if (rightArray[i] == 0)
                     {
                         diagnostics->warning(
                             getLine(), "Divide by zero error during constant folding", "/", "");
                         resultArray[i].setIConst(INT_MAX);
                     }
                     else
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/IntermNode.h
+++ b/gfx/angle/src/compiler/translator/IntermNode.h
@@ -196,17 +196,17 @@ enum TLoopType
 class TIntermLoop : public TIntermNode
 {
   public:
     TIntermLoop(TLoopType type,
                 TIntermNode *init,
                 TIntermTyped *cond,
                 TIntermTyped *expr,
                 TIntermBlock *body)
-        : mType(type), mInit(init), mCond(cond), mExpr(expr), mBody(body), mUnrollFlag(false)
+        : mType(type), mInit(init), mCond(cond), mExpr(expr), mBody(body)
     {
     }
 
     TIntermLoop *getAsLoopNode() override { return this; }
     void traverse(TIntermTraverser *it) override;
     bool replaceChildNode(TIntermNode *original, TIntermNode *replacement) override;
 
     TLoopType getType() const { return mType; }
@@ -214,27 +214,22 @@ class TIntermLoop : public TIntermNode
     TIntermTyped *getCondition() { return mCond; }
     TIntermTyped *getExpression() { return mExpr; }
     TIntermBlock *getBody() { return mBody; }
 
     void setCondition(TIntermTyped *condition) { mCond = condition; }
     void setExpression(TIntermTyped *expression) { mExpr = expression; }
     void setBody(TIntermBlock *body) { mBody = body; }
 
-    void setUnrollFlag(bool flag) { mUnrollFlag = flag; }
-    bool getUnrollFlag() const { return mUnrollFlag; }
-
   protected:
     TLoopType mType;
     TIntermNode *mInit;  // for-loop initialization
     TIntermTyped *mCond; // loop exit condition
     TIntermTyped *mExpr; // for-loop expression
     TIntermBlock *mBody;  // loop body
-
-    bool mUnrollFlag; // Whether the loop should be unrolled or not.
 };
 
 //
 // Handle break, continue, return, and kill.
 //
 class TIntermBranch : public TIntermNode
 {
   public:
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp
+++ b/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp
@@ -101,9 +101,18 @@ bool IntermNodePatternMatcher::match(TIn
 {
     if ((mMask & kUnfoldedShortCircuitExpression) != 0)
     {
         return true;
     }
     return false;
 }
 
+bool IntermNodePatternMatcher::match(TIntermDeclaration *node)
+{
+    if ((mMask & kMultiDeclaration) != 0)
+    {
+        return node->getSequence()->size() > 1;
+    }
+    return false;
+}
+
 }  // namespace sh
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.h
+++ b/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.h
@@ -13,44 +13,49 @@
 
 namespace sh
 {
 
 class TIntermAggregate;
 class TIntermBinary;
 class TIntermNode;
 class TIntermTernary;
+class TIntermDeclaration;
 
 class IntermNodePatternMatcher
 {
   public:
     static bool IsDynamicIndexingOfVectorOrMatrix(TIntermBinary *node);
 
     enum PatternType
     {
         // Matches expressions that are unfolded to if statements by UnfoldShortCircuitToIf
         kUnfoldedShortCircuitExpression = 0x0001,
 
         // Matches expressions that return arrays with the exception of simple statements where a
         // constructor or function call result is assigned.
         kExpressionReturningArray = 0x0002,
 
         // Matches dynamic indexing of vectors or matrices in l-values.
-        kDynamicIndexingOfVectorOrMatrixInLValue = 0x0004
+        kDynamicIndexingOfVectorOrMatrixInLValue = 0x0004,
+
+        // Matches declarations with more than one declared variables
+        kMultiDeclaration = 0x0008,
     };
     IntermNodePatternMatcher(const unsigned int mask);
 
     bool match(TIntermBinary *node, TIntermNode *parentNode);
 
     // Use this version for checking binary node matches in case you're using flag
     // kDynamicIndexingOfVectorOrMatrixInLValue.
     bool match(TIntermBinary *node, TIntermNode *parentNode, bool isLValueRequiredHere);
 
     bool match(TIntermAggregate *node, TIntermNode *parentNode);
     bool match(TIntermTernary *node);
+    bool match(TIntermDeclaration *node);
 
   private:
     const unsigned int mMask;
 
     bool matchInternal(TIntermBinary *node, TIntermNode *parentNode);
 };
 
 }  // namespace sh
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
deleted file mode 100755
--- a/gfx/angle/src/compiler/translator/LoopInfo.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// Copyright (c) 2002-2014 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 "compiler/translator/LoopInfo.h"
-
-namespace sh
-{
-
-namespace
-{
-
-int EvaluateIntConstant(TIntermConstantUnion *node)
-{
-    ASSERT(node && node->getUnionArrayPointer());
-    return node->getIConst(0);
-}
-
-int GetLoopIntIncrement(TIntermLoop *node)
-{
-    TIntermNode *expr = node->getExpression();
-    // for expression has one of the following forms:
-    //     loop_index++
-    //     loop_index--
-    //     loop_index += constant_expression
-    //     loop_index -= constant_expression
-    //     ++loop_index
-    //     --loop_index
-    // The last two forms are not specified in the spec, but I am assuming
-    // its an oversight.
-    TIntermUnary *unOp = expr->getAsUnaryNode();
-    TIntermBinary *binOp = unOp ? NULL : expr->getAsBinaryNode();
-
-    TOperator op = EOpNull;
-    TIntermConstantUnion *incrementNode = NULL;
-    if (unOp)
-    {
-        op = unOp->getOp();
-    }
-    else if (binOp)
-    {
-        op = binOp->getOp();
-        ASSERT(binOp->getRight());
-        incrementNode = binOp->getRight()->getAsConstantUnion();
-        ASSERT(incrementNode);
-    }
-
-    int increment = 0;
-    // The operator is one of: ++ -- += -=.
-    switch (op)
-    {
-      case EOpPostIncrement:
-      case EOpPreIncrement:
-        ASSERT(unOp && !binOp);
-        increment = 1;
-        break;
-      case EOpPostDecrement:
-      case EOpPreDecrement:
-        ASSERT(unOp && !binOp);
-        increment = -1;
-        break;
-      case EOpAddAssign:
-        ASSERT(!unOp && binOp);
-        increment = EvaluateIntConstant(incrementNode);
-        break;
-      case EOpSubAssign:
-        ASSERT(!unOp && binOp);
-        increment = - EvaluateIntConstant(incrementNode);
-        break;
-      default:
-        UNREACHABLE();
-    }
-
-    return increment;
-}
-
-}  // namespace anonymous
-
-TLoopIndexInfo::TLoopIndexInfo()
-    : mId(-1),
-      mType(EbtVoid),
-      mInitValue(0),
-      mStopValue(0),
-      mIncrementValue(0),
-      mOp(EOpNull),
-      mCurrentValue(0)
-{
-}
-
-void TLoopIndexInfo::fillInfo(TIntermLoop *node)
-{
-    if (node == NULL)
-        return;
-
-    // Here we assume all the operations are valid, because the loop node is
-    // already validated in ValidateLimitations.
-    TIntermSequence *declSeq = node->getInit()->getAsDeclarationNode()->getSequence();
-    TIntermBinary *declInit = (*declSeq)[0]->getAsBinaryNode();
-    TIntermSymbol *symbol = declInit->getLeft()->getAsSymbolNode();
-
-    mId = symbol->getId();
-    mType = symbol->getBasicType();
-
-    if (mType == EbtInt)
-    {
-        TIntermConstantUnion* initNode = declInit->getRight()->getAsConstantUnion();
-        mInitValue = EvaluateIntConstant(initNode);
-        mCurrentValue = mInitValue;
-        mIncrementValue = GetLoopIntIncrement(node);
-
-        TIntermBinary* binOp = node->getCondition()->getAsBinaryNode();
-        mStopValue = EvaluateIntConstant(
-            binOp->getRight()->getAsConstantUnion());
-        mOp = binOp->getOp();
-    }
-}
-
-bool TLoopIndexInfo::satisfiesLoopCondition() const
-{
-    // Relational operator is one of: > >= < <= == or !=.
-    switch (mOp)
-    {
-      case EOpEqual:
-        return (mCurrentValue == mStopValue);
-      case EOpNotEqual:
-        return (mCurrentValue != mStopValue);
-      case EOpLessThan:
-        return (mCurrentValue < mStopValue);
-      case EOpGreaterThan:
-        return (mCurrentValue > mStopValue);
-      case EOpLessThanEqual:
-        return (mCurrentValue <= mStopValue);
-      case EOpGreaterThanEqual:
-        return (mCurrentValue >= mStopValue);
-      default:
-        UNREACHABLE();
-        return false;
-    }
-}
-
-TLoopInfo::TLoopInfo()
-    : loop(NULL)
-{
-}
-
-TLoopInfo::TLoopInfo(TIntermLoop *node)
-    : loop(node)
-{
-    index.fillInfo(node);
-}
-
-TIntermLoop *TLoopStack::findLoop(TIntermSymbol *symbol)
-{
-    if (!symbol)
-        return NULL;
-    for (iterator iter = begin(); iter != end(); ++iter)
-    {
-        if (iter->index.getId() == symbol->getId())
-            return iter->loop;
-    }
-    return NULL;
-}
-
-TLoopIndexInfo *TLoopStack::getIndexInfo(TIntermSymbol *symbol)
-{
-    if (!symbol)
-        return NULL;
-    for (iterator iter = begin(); iter != end(); ++iter)
-    {
-        if (iter->index.getId() == symbol->getId())
-            return &(iter->index);
-    }
-    return NULL;
-}
-
-void TLoopStack::step()
-{
-    ASSERT(!empty());
-    rbegin()->index.step();
-}
-
-bool TLoopStack::satisfiesLoopCondition()
-{
-    ASSERT(!empty());
-    return rbegin()->index.satisfiesLoopCondition();
-}
-
-bool TLoopStack::needsToReplaceSymbolWithValue(TIntermSymbol *symbol)
-{
-    TIntermLoop *loop = findLoop(symbol);
-    return loop && loop->getUnrollFlag();
-}
-
-int TLoopStack::getLoopIndexValue(TIntermSymbol *symbol)
-{
-    TLoopIndexInfo *info = getIndexInfo(symbol);
-    ASSERT(info);
-    return info->getCurrentValue();
-}
-
-void TLoopStack::push(TIntermLoop *loop)
-{
-    TLoopInfo info(loop);
-    push_back(info);
-}
-
-void TLoopStack::pop()
-{
-    pop_back();
-}
-
-}  // namespace sh
deleted file mode 100755
--- a/gfx/angle/src/compiler/translator/LoopInfo.h
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// Copyright (c) 2002-2014 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_TRANSLATOR_LOOPINFO_H_
-#define COMPILER_TRANSLATOR_LOOPINFO_H_
-
-#include "compiler/translator/IntermNode.h"
-
-namespace sh
-{
-
-class TLoopIndexInfo
-{
-  public:
-    TLoopIndexInfo();
-
-    // If type is EbtInt, fill all fields of the structure with info
-    // extracted from a loop node.
-    // If type is not EbtInt, only fill id and type.
-    void fillInfo(TIntermLoop *node);
-
-    int getId() const { return mId; }
-    void setId(int id) { mId = id; }
-    TBasicType getType() const { return mType; }
-    void setType(TBasicType type) { mType = type; }
-    int getCurrentValue() const { return mCurrentValue; }
-
-    void step() { mCurrentValue += mIncrementValue; }
-
-    // Check if the current value satisfies the loop condition.
-    bool satisfiesLoopCondition() const;
-
-  private:
-    int mId;
-    TBasicType mType;  // Either EbtInt or EbtFloat
-
-    // Below fields are only valid if the index's type is int.
-    int mInitValue;
-    int mStopValue;
-    int mIncrementValue;
-    TOperator mOp;
-    int mCurrentValue;
-};
-
-struct TLoopInfo
-{
-    TLoopIndexInfo index;
-    TIntermLoop *loop;
-
-    TLoopInfo();
-    TLoopInfo(TIntermLoop *node);
-};
-
-class TLoopStack : public TVector<TLoopInfo>
-{
-  public:
-    // Search loop stack for a loop whose index matches the input symbol.
-    TIntermLoop *findLoop(TIntermSymbol *symbol);
-
-    // Find the loop index info in the loop stack by the input symbol.
-    TLoopIndexInfo *getIndexInfo(TIntermSymbol *symbol);
-
-    // Update the currentValue for the next loop iteration.
-    void step();
-
-    // Return false if loop condition is no longer satisfied.
-    bool satisfiesLoopCondition();
-
-    // Check if the symbol is the index of a loop that's unrolled.
-    bool needsToReplaceSymbolWithValue(TIntermSymbol *symbol);
-
-    // Return the current value of a given loop index symbol.
-    int getLoopIndexValue(TIntermSymbol *symbol);
-
-    void push(TIntermLoop *info);
-    void pop();
-};
-
-}  // namespace sh
-
-#endif // COMPILER_TRANSLATOR_LOOPINFO_H_
-
deleted file mode 100755
--- a/gfx/angle/src/compiler/translator/MMap.h
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// 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.
-//
-
-#ifndef COMPILER_TRANSLATOR_MMAP_H_
-#define COMPILER_TRANSLATOR_MMAP_H_
-
-//
-// Encapsulate memory mapped files
-//
-
-class TMMap {
-public:
-    TMMap(const char* fileName) : 
-        fSize(-1), // -1 is the error value returned by GetFileSize()
-        fp(NULL),
-        fBuff(0)   // 0 is the error value returned by MapViewOfFile()
-    {
-        if ((fp = fopen(fileName, "r")) == NULL)
-            return;
-        char c = getc(fp);
-        fSize = 0;
-        while (c != EOF) {
-            fSize++;
-            c = getc(fp);
-        }
-        if (c == EOF)
-            fSize++;
-        rewind(fp);
-        fBuff = (char*)malloc(sizeof(char) * fSize);
-        int count = 0;
-        c = getc(fp);
-        while (c != EOF) {
-            fBuff[count++] = c;
-            c = getc(fp);
-        }
-        fBuff[count++] = c;
-    }
-
-    char* getData() { return fBuff; }
-    int   getSize() { return fSize; }
-
-    ~TMMap() {
-        if (fp != NULL)
-            fclose(fp);
-    }
-    
-private:
-    int             fSize;      // size of file to map in
-    FILE *fp;
-    char*           fBuff;      // the actual data;
-};
-
-#endif // COMPILER_TRANSLATOR_MMAP_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/OutputGLSLBase.cpp
+++ b/gfx/angle/src/compiler/translator/OutputGLSLBase.cpp
@@ -2,16 +2,17 @@
 // Copyright (c) 2002-2014 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 "compiler/translator/OutputGLSLBase.h"
 
 #include "common/debug.h"
+#include "common/mathutil.h"
 
 #include <cfloat>
 
 namespace sh
 {
 
 namespace
 {
@@ -107,16 +108,28 @@ void TOutputGLSLBase::writeInvariantQual
 {
     if (!sh::RemoveInvariant(mShaderType, mShaderVersion, mOutput, mCompileOptions))
     {
         TInfoSinkBase &out = objSink();
         out << "invariant ";
     }
 }
 
+void TOutputGLSLBase::writeFloat(TInfoSinkBase &out, float f)
+{
+    if ((gl::isInf(f) || gl::isNaN(f)) && mShaderVersion >= 300)
+    {
+        out << "uintBitsToFloat(" << gl::bitCast<uint32_t>(f) << "u)";
+    }
+    else
+    {
+        out << std::min(FLT_MAX, std::max(-FLT_MAX, f));
+    }
+}
+
 void TOutputGLSLBase::writeTriplet(
     Visit visit, const char *preStr, const char *inStr, const char *postStr)
 {
     TInfoSinkBase &out = objSink();
     if (visit == PreVisit && preStr)
         out << preStr;
     else if (visit == InVisit && inStr)
         out << inStr;
@@ -324,18 +337,18 @@ const TConstantUnion *TOutputGLSLBase::w
         bool writeType = size > 1;
         if (writeType)
             out << getTypeName(type) << "(";
         for (size_t i = 0; i < size; ++i, ++pConstUnion)
         {
             switch (pConstUnion->getType())
             {
               case EbtFloat:
-                out << std::min(FLT_MAX, std::max(-FLT_MAX, pConstUnion->getFConst()));
-                break;
+                  writeFloat(out, pConstUnion->getFConst());
+                  break;
               case EbtInt:
                 out << pConstUnion->getIConst();
                 break;
               case EbtUInt:
                 out << pConstUnion->getUConst() << "u";
                 break;
               case EbtBool:
                 out << pConstUnion->getBConst();
@@ -371,20 +384,17 @@ void TOutputGLSLBase::writeConstructorTr
     {
         writeTriplet(visit, nullptr, ", ", ")");
     }
 }
 
 void TOutputGLSLBase::visitSymbol(TIntermSymbol *node)
 {
     TInfoSinkBase &out = objSink();
-    if (mLoopUnrollStack.needsToReplaceSymbolWithValue(node))
-        out << mLoopUnrollStack.getLoopIndexValue(node);
-    else
-        out << hashVariableName(node->getName());
+    out << hashVariableName(node->getName());
 
     if (mDeclaringVariables && node->getType().isArray())
         out << arrayBrackets(node->getType());
 }
 
 void TOutputGLSLBase::visitConstantUnion(TIntermConstantUnion *node)
 {
     writeConstantUnion(node->getType(), node->getUnionArrayPointer());
@@ -1119,59 +1129,32 @@ bool TOutputGLSLBase::visitDeclaration(V
 bool TOutputGLSLBase::visitLoop(Visit visit, TIntermLoop *node)
 {
     TInfoSinkBase &out = objSink();
 
     incrementDepth(node);
 
     TLoopType loopType = node->getType();
 
-    // Only for loops can be unrolled
-    ASSERT(!node->getUnrollFlag() || loopType == ELoopFor);
-
     if (loopType == ELoopFor)  // for loop
     {
-        if (!node->getUnrollFlag())
-        {
-            out << "for (";
-            if (node->getInit())
-                node->getInit()->traverse(this);
-            out << "; ";
-
-            if (node->getCondition())
-                node->getCondition()->traverse(this);
-            out << "; ";
-
-            if (node->getExpression())
-                node->getExpression()->traverse(this);
-            out << ")\n";
+        out << "for (";
+        if (node->getInit())
+            node->getInit()->traverse(this);
+        out << "; ";
 
-            visitCodeBlock(node->getBody());
-        }
-        else
-        {
-            // Need to put a one-iteration loop here to handle break.
-            TIntermSequence *declSeq = node->getInit()->getAsDeclarationNode()->getSequence();
-            TIntermSymbol *indexSymbol =
-                (*declSeq)[0]->getAsBinaryNode()->getLeft()->getAsSymbolNode();
-            TString name = hashVariableName(indexSymbol->getName());
-            out << "for (int " << name << " = 0; "
-                << name << " < 1; "
-                << "++" << name << ")\n";
+        if (node->getCondition())
+            node->getCondition()->traverse(this);
+        out << "; ";
 
-            out << "{\n";
-            mLoopUnrollStack.push(node);
-            while (mLoopUnrollStack.satisfiesLoopCondition())
-            {
-                visitCodeBlock(node->getBody());
-                mLoopUnrollStack.step();
-            }
-            mLoopUnrollStack.pop();
-            out << "}\n";
-        }
+        if (node->getExpression())
+            node->getExpression()->traverse(this);
+        out << ")\n";
+
+        visitCodeBlock(node->getBody());
     }
     else if (loopType == ELoopWhile)  // while loop
     {
         out << "while (";
         ASSERT(node->getCondition() != NULL);
         node->getCondition()->traverse(this);
         out << ")\n";
 
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/OutputGLSLBase.h
+++ b/gfx/angle/src/compiler/translator/OutputGLSLBase.h
@@ -5,17 +5,16 @@
 //
 
 #ifndef COMPILER_TRANSLATOR_OUTPUTGLSLBASE_H_
 #define COMPILER_TRANSLATOR_OUTPUTGLSLBASE_H_
 
 #include <set>
 
 #include "compiler/translator/IntermNode.h"
-#include "compiler/translator/LoopInfo.h"
 #include "compiler/translator/ParseContext.h"
 
 namespace sh
 {
 
 class TOutputGLSLBase : public TIntermTraverser
 {
   public:
@@ -31,16 +30,17 @@ class TOutputGLSLBase : public TIntermTr
 
     ShShaderOutput getShaderOutput() const
     {
         return mOutput;
     }
 
   protected:
     TInfoSinkBase &objSink() { return mObjSink; }
+    void writeFloat(TInfoSinkBase &out, float f);
     void writeTriplet(Visit visit, const char *preStr, const char *inStr, const char *postStr);
     void writeLayoutQualifier(const TType &type);
     void writeInvariantQualifier(const TType &type);
     void writeVariableType(const TType &type);
     virtual bool writeVariablePrecision(TPrecision precision) = 0;
     void writeFunctionParameters(const TIntermSequence &args);
     const TConstantUnion *writeConstantUnion(const TType &type, const TConstantUnion *pConstUnion);
     void writeConstructorTriplet(Visit visit, const TType &type);
@@ -86,19 +86,16 @@ class TOutputGLSLBase : public TIntermTr
     const char *mapQualifierToString(TQualifier qialifier);
 
     TInfoSinkBase &mObjSink;
     bool mDeclaringVariables;
 
     // This set contains all the ids of the structs from every scope.
     std::set<int> mDeclaredStructs;
 
-    // Stack of loops that need to be unrolled.
-    TLoopStack mLoopUnrollStack;
-
     ShArrayIndexClampingStrategy mClampingStrategy;
 
     // name hashing.
     ShHashFunction64 mHashFunction;
 
     NameMap &mNameMap;
 
     TSymbolTable &mSymbolTable;
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/OutputHLSL.cpp
+++ b/gfx/angle/src/compiler/translator/OutputHLSL.cpp
@@ -26,60 +26,70 @@
 #include "compiler/translator/UniformHLSL.h"
 #include "compiler/translator/UtilsHLSL.h"
 #include "compiler/translator/blocklayout.h"
 #include "compiler/translator/util.h"
 
 namespace sh
 {
 
-namespace
+void OutputHLSL::writeFloat(TInfoSinkBase &out, float f)
 {
-
-void WriteSingleConstant(TInfoSinkBase &out, const TConstantUnion *const constUnion)
+    // This is known not to work for NaN on all drivers but make the best effort to output NaNs
+    // regardless.
+    if ((gl::isInf(f) || gl::isNaN(f)) && mShaderVersion >= 300 &&
+        mOutputType == SH_HLSL_4_1_OUTPUT)
+    {
+        out << "asfloat(" << gl::bitCast<uint32_t>(f) << "u)";
+    }
+    else
+    {
+        out << std::min(FLT_MAX, std::max(-FLT_MAX, f));
+    }
+}
+
+void OutputHLSL::writeSingleConstant(TInfoSinkBase &out, const TConstantUnion *const constUnion)
 {
     ASSERT(constUnion != nullptr);
     switch (constUnion->getType())
     {
         case EbtFloat:
-            out << std::min(FLT_MAX, std::max(-FLT_MAX, constUnion->getFConst()));
+            writeFloat(out, constUnion->getFConst());
             break;
         case EbtInt:
             out << constUnion->getIConst();
             break;
         case EbtUInt:
             out << constUnion->getUConst();
             break;
         case EbtBool:
             out << constUnion->getBConst();
             break;
         default:
             UNREACHABLE();
     }
 }
 
-const TConstantUnion *WriteConstantUnionArray(TInfoSinkBase &out,
-                                              const TConstantUnion *const constUnion,
-                                              const size_t size)
+const TConstantUnion *OutputHLSL::writeConstantUnionArray(TInfoSinkBase &out,
+                                                          const TConstantUnion *const constUnion,
+                                                          const size_t size)
 {
     const TConstantUnion *constUnionIterated = constUnion;
     for (size_t i = 0; i < size; i++, constUnionIterated++)
     {
-        WriteSingleConstant(out, constUnionIterated);
+        writeSingleConstant(out, constUnionIterated);
 
         if (i != size - 1)
         {
             out << ", ";
         }
     }
     return constUnionIterated;
 }
 
-} // namespace
-
 OutputHLSL::OutputHLSL(sh::GLenum shaderType,
                        int shaderVersion,
                        const TExtensionBehavior &extensionBehavior,
                        const char *sourcePath,
                        ShShaderOutput outputType,
                        int numRenderTargets,
                        const std::vector<Uniform> &uniforms,
                        ShCompileOptions compileOptions)
@@ -2566,17 +2576,17 @@ const TConstantUnion *OutputHLSL::writeC
     {
         size_t size = type.getObjectSize();
         bool writeType = size > 1;
 
         if (writeType)
         {
             out << TypeString(type) << "(";
         }
-        constUnionIterated = WriteConstantUnionArray(out, constUnionIterated, size);
+        constUnionIterated = writeConstantUnionArray(out, constUnionIterated, size);
         if (writeType)
         {
             out << ")";
         }
     }
 
     return constUnionIterated;
 }
@@ -2627,28 +2637,28 @@ bool OutputHLSL::writeConstantInitializa
         {
             out << "[" << expression->getType().getArraySize() << "]";
         }
         out << " = {";
         if (expression->getAsConstantUnion())
         {
             TIntermConstantUnion *nodeConst  = expression->getAsConstantUnion();
             const TConstantUnion *constUnion = nodeConst->getUnionArrayPointer();
-            WriteConstantUnionArray(out, constUnion, nodeConst->getType().getObjectSize());
+            writeConstantUnionArray(out, constUnion, nodeConst->getType().getObjectSize());
         }
         else
         {
             TIntermAggregate *constructor = expression->getAsAggregate();
             ASSERT(constructor != nullptr);
             for (TIntermNode *&node : *constructor->getSequence())
             {
                 TIntermConstantUnion *nodeConst = node->getAsConstantUnion();
                 ASSERT(nodeConst);
                 const TConstantUnion *constUnion = nodeConst->getUnionArrayPointer();
-                WriteConstantUnionArray(out, constUnion, nodeConst->getType().getObjectSize());
+                writeConstantUnionArray(out, constUnion, nodeConst->getType().getObjectSize());
                 if (node != constructor->getSequence()->back())
                 {
                     out << ", ";
                 }
             }
         }
         out << "}";
         return true;
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/OutputHLSL.h
+++ b/gfx/angle/src/compiler/translator/OutputHLSL.h
@@ -50,16 +50,22 @@ class OutputHLSL : public TIntermTravers
 
     TInfoSinkBase &getInfoSink() { ASSERT(!mInfoSinkStack.empty()); return *mInfoSinkStack.top(); }
 
     static bool canWriteAsHLSLLiteral(TIntermTyped *expression);
 
   protected:
     void header(TInfoSinkBase &out, const BuiltInFunctionEmulator *builtInFunctionEmulator);
 
+    void writeFloat(TInfoSinkBase &out, float f);
+    void writeSingleConstant(TInfoSinkBase &out, const TConstantUnion *const constUnion);
+    const TConstantUnion *writeConstantUnionArray(TInfoSinkBase &out,
+                                                  const TConstantUnion *const constUnion,
+                                                  const size_t size);
+
     // Visit AST nodes and output their code to the body stream
     void visitSymbol(TIntermSymbol*);
     void visitRaw(TIntermRaw*);
     void visitConstantUnion(TIntermConstantUnion*);
     bool visitSwizzle(Visit visit, TIntermSwizzle *node) override;
     bool visitBinary(Visit visit, TIntermBinary*);
     bool visitUnary(Visit visit, TIntermUnary*);
     bool visitTernary(Visit visit, TIntermTernary *);
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/ParseContext.cpp
+++ b/gfx/angle/src/compiler/translator/ParseContext.cpp
@@ -94,17 +94,17 @@ TParseContext::TParseContext(TSymbolTabl
       mDefaultMatrixPacking(EmpColumnMajor),
       mDefaultBlockStorage(sh::IsWebGLBasedSpec(spec) ? EbsStd140 : EbsShared),
       mDiagnostics(is),
       mDirectiveHandler(ext,
                         mDiagnostics,
                         mShaderVersion,
                         mShaderType,
                         resources.WEBGL_debug_shader_precision == 1),
-      mPreprocessor(&mDiagnostics, &mDirectiveHandler),
+      mPreprocessor(&mDiagnostics, &mDirectiveHandler, pp::PreprocessorSettings()),
       mScanner(nullptr),
       mUsesFragData(false),
       mUsesFragColor(false),
       mUsesSecondaryOutputs(false),
       mMinProgramTexelOffset(resources.MinProgramTexelOffset),
       mMaxProgramTexelOffset(resources.MaxProgramTexelOffset),
       mComputeShaderLocalSizeDeclared(false),
       mDeclaringFunction(false)
@@ -1466,16 +1466,35 @@ TIntermTyped *TParseContext::parseVariab
 {
     const TVariable *variable = getNamedVariable(location, name, symbol);
 
     if (variable->getConstPointer())
     {
         const TConstantUnion *constArray = variable->getConstPointer();
         return intermediate.addConstantUnion(constArray, variable->getType(), location);
     }
+    else if (variable->getType().getQualifier() == EvqWorkGroupSize &&
+             mComputeShaderLocalSizeDeclared)
+    {
+        // gl_WorkGroupSize can be used to size arrays according to the ESSL 3.10.4 spec, so it
+        // needs to be added to the AST as a constant and not as a symbol.
+        sh::WorkGroupSize workGroupSize = getComputeShaderLocalSize();
+        TConstantUnion *constArray      = new TConstantUnion[3];
+        for (size_t i = 0; i < 3; ++i)
+        {
+            constArray[i].setUConst(static_cast<unsigned int>(workGroupSize[i]));
+        }
+
+        ASSERT(variable->getType().getBasicType() == EbtUInt);
+        ASSERT(variable->getType().getObjectSize() == 3);
+
+        TType type(variable->getType());
+        type.setQualifier(EvqConst);
+        return intermediate.addConstantUnion(constArray, type, location);
+    }
     else
     {
         return intermediate.addSymbol(variable->getUniqueId(), variable->getName(),
                                       variable->getType(), location);
     }
 }
 
 //
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/SimplifyLoopConditions.cpp
+++ b/gfx/angle/src/compiler/translator/SimplifyLoopConditions.cpp
@@ -35,86 +35,98 @@ class SimplifyLoopConditionsTraverser : 
                                     const TSymbolTable &symbolTable,
                                     int shaderVersion);
 
     void traverseLoop(TIntermLoop *node) override;
 
     bool visitBinary(Visit visit, TIntermBinary *node) override;
     bool visitAggregate(Visit visit, TIntermAggregate *node) override;
     bool visitTernary(Visit visit, TIntermTernary *node) override;
+    bool visitDeclaration(Visit visit, TIntermDeclaration *node) override;
 
     void nextIteration();
     bool foundLoopToChange() const { return mFoundLoopToChange; }
 
   protected:
     // Marked to true once an operation that needs to be hoisted out of the expression has been
     // found. After that, no more AST updates are performed on that traversal.
     bool mFoundLoopToChange;
-    bool mInsideLoopConditionOrExpression;
+    bool mInsideLoopInitConditionOrExpression;
     IntermNodePatternMatcher mConditionsToSimplify;
 };
 
 SimplifyLoopConditionsTraverser::SimplifyLoopConditionsTraverser(
     unsigned int conditionsToSimplifyMask,
     const TSymbolTable &symbolTable,
     int shaderVersion)
     : TLValueTrackingTraverser(true, false, false, symbolTable, shaderVersion),
       mFoundLoopToChange(false),
-      mInsideLoopConditionOrExpression(false),
+      mInsideLoopInitConditionOrExpression(false),
       mConditionsToSimplify(conditionsToSimplifyMask)
 {
 }
 
 void SimplifyLoopConditionsTraverser::nextIteration()
 {
     mFoundLoopToChange               = false;
-    mInsideLoopConditionOrExpression = false;
+    mInsideLoopInitConditionOrExpression = false;
     nextTemporaryIndex();
 }
 
+// The visit functions operate in three modes:
+// 1. If a matching expression has already been found, we return early since only one loop can
+//    be transformed on one traversal.
+// 2. We try to find loops. In case a node is not inside a loop and can not contain loops, we
+//    stop traversing the subtree.
+// 3. If we're inside a loop initialization, condition or expression, we check for expressions
+//    that should be moved out of the loop condition or expression. If one is found, the loop
+//    is processed.
 bool SimplifyLoopConditionsTraverser::visitBinary(Visit visit, TIntermBinary *node)
 {
-    // The visit functions operate in three modes:
-    // 1. If a matching expression has already been found, we return early since only one loop can
-    //    be transformed on one traversal.
-    // 2. We try to find loops. In case a node is not inside a loop and can not contain loops, we
-    //    stop traversing the subtree.
-    // 3. If we're inside a loop condition or expression, we check for expressions that should be
-    //    moved out of the loop condition or expression. If one is found, the loop is processed.
 
     if (mFoundLoopToChange)
         return false;
 
-    if (!mInsideLoopConditionOrExpression)
+    if (!mInsideLoopInitConditionOrExpression)
         return false;
 
     mFoundLoopToChange = mConditionsToSimplify.match(node, getParentNode(), isLValueRequiredHere());
     return !mFoundLoopToChange;
 }
 
 bool SimplifyLoopConditionsTraverser::visitAggregate(Visit visit, TIntermAggregate *node)
 {
     if (mFoundLoopToChange)
         return false;
 
-    // If we're outside a loop condition, we only need to traverse nodes that may contain loops.
-    if (!mInsideLoopConditionOrExpression)
+    if (!mInsideLoopInitConditionOrExpression)
         return false;
 
     mFoundLoopToChange = mConditionsToSimplify.match(node, getParentNode());
     return !mFoundLoopToChange;
 }
 
 bool SimplifyLoopConditionsTraverser::visitTernary(Visit visit, TIntermTernary *node)
 {
     if (mFoundLoopToChange)
         return false;
 
-    // Don't traverse ternary operators outside loop conditions.
-    if (!mInsideLoopConditionOrExpression)
+    if (!mInsideLoopInitConditionOrExpression)
+        return false;
+
+    mFoundLoopToChange = mConditionsToSimplify.match(node);
+    return !mFoundLoopToChange;
+}
+
+bool SimplifyLoopConditionsTraverser::visitDeclaration(Visit visit, TIntermDeclaration *node)
+{
+    if (mFoundLoopToChange)
+        return false;
+
+    if (!mInsideLoopInitConditionOrExpression)
         return false;
 
     mFoundLoopToChange = mConditionsToSimplify.match(node);
     return !mFoundLoopToChange;
 }
 
 void SimplifyLoopConditionsTraverser::traverseLoop(TIntermLoop *node)
 {
@@ -122,146 +134,132 @@ void SimplifyLoopConditionsTraverser::tr
         return;
 
     // Mark that we're inside a loop condition or expression, and transform the loop if needed.
 
     incrementDepth(node);
 
     // Note: No need to traverse the loop init node.
 
-    mInsideLoopConditionOrExpression = true;
-    TLoopType loopType               = node->getType();
+    mInsideLoopInitConditionOrExpression = true;
+    TLoopType loopType                   = node->getType();
 
-    if (node->getCondition())
+    if (!mFoundLoopToChange && node->getInit())
+    {
+        node->getInit()->traverse(this);
+    }
+
+    if (!mFoundLoopToChange && node->getCondition())
     {
         node->getCondition()->traverse(this);
-
-        if (mFoundLoopToChange)
-        {
-            // Replace the loop condition with a boolean variable that's updated on each iteration.
-            if (loopType == ELoopWhile)
-            {
-                // Transform:
-                //   while (expr) { body; }
-                // into
-                //   bool s0 = expr;
-                //   while (s0) { { body; } s0 = expr; }
-                TIntermSequence tempInitSeq;
-                tempInitSeq.push_back(createTempInitDeclaration(node->getCondition()->deepCopy()));
-                insertStatementsInParentBlock(tempInitSeq);
-
-                TIntermBlock *newBody = new TIntermBlock();
-                if (node->getBody())
-                {
-                    newBody->getSequence()->push_back(node->getBody());
-                }
-                newBody->getSequence()->push_back(
-                    createTempAssignment(node->getCondition()->deepCopy()));
-
-                // Can't use queueReplacement to replace old body, since it may have been nullptr.
-                // It's safe to do the replacements in place here - this node won't be traversed
-                // further.
-                node->setBody(newBody);
-                node->setCondition(createTempSymbol(node->getCondition()->getType()));
-            }
-            else if (loopType == ELoopDoWhile)
-            {
-                // Transform:
-                //   do {
-                //     body;
-                //   } while (expr);
-                // into
-                //   bool s0 = true;
-                //   do {
-                //     { body; }
-                //     s0 = expr;
-                //   while (s0);
-                TIntermSequence tempInitSeq;
-                tempInitSeq.push_back(createTempInitDeclaration(CreateBoolConstantNode(true)));
-                insertStatementsInParentBlock(tempInitSeq);
-
-                TIntermBlock *newBody = new TIntermBlock();
-                if (node->getBody())
-                {
-                    newBody->getSequence()->push_back(node->getBody());
-                }
-                newBody->getSequence()->push_back(
-                    createTempAssignment(node->getCondition()->deepCopy()));
-
-                // Can't use queueReplacement to replace old body, since it may have been nullptr.
-                // It's safe to do the replacements in place here - this node won't be traversed
-                // further.
-                node->setBody(newBody);
-                node->setCondition(createTempSymbol(node->getCondition()->getType()));
-            }
-            else if (loopType == ELoopFor)
-            {
-                // Move the loop condition inside the loop.
-                // Transform:
-                //   for (init; expr; exprB) { body; }
-                // into
-                //   {
-                //     init;
-                //     bool s0 = expr;
-                //     while (s0) { { body; } exprB; s0 = expr; }
-                //   }
-                TIntermBlock *loopScope = new TIntermBlock();
-                if (node->getInit())
-                {
-                    loopScope->getSequence()->push_back(node->getInit());
-                }
-                loopScope->getSequence()->push_back(
-                    createTempInitDeclaration(node->getCondition()->deepCopy()));
-
-                TIntermBlock *whileLoopBody = new TIntermBlock();
-                if (node->getBody())
-                {
-                    whileLoopBody->getSequence()->push_back(node->getBody());
-                }
-                if (node->getExpression())
-                {
-                    whileLoopBody->getSequence()->push_back(node->getExpression());
-                }
-                whileLoopBody->getSequence()->push_back(
-                    createTempAssignment(node->getCondition()->deepCopy()));
-                TIntermLoop *whileLoop = new TIntermLoop(
-                    ELoopWhile, nullptr, createTempSymbol(node->getCondition()->getType()), nullptr,
-                    whileLoopBody);
-                loopScope->getSequence()->push_back(whileLoop);
-                queueReplacementWithParent(getAncestorNode(1), node, loopScope,
-                                           OriginalNode::IS_DROPPED);
-            }
-        }
     }
 
     if (!mFoundLoopToChange && node->getExpression())
     {
         node->getExpression()->traverse(this);
+    }
 
-        if (mFoundLoopToChange)
+    if (mFoundLoopToChange)
+    {
+        // Replace the loop condition with a boolean variable that's updated on each iteration.
+        if (loopType == ELoopWhile)
+        {
+            // Transform:
+            //   while (expr) { body; }
+            // into
+            //   bool s0 = expr;
+            //   while (s0) { { body; } s0 = expr; }
+            TIntermSequence tempInitSeq;
+            tempInitSeq.push_back(createTempInitDeclaration(node->getCondition()->deepCopy()));
+            insertStatementsInParentBlock(tempInitSeq);
+
+            TIntermBlock *newBody = new TIntermBlock();
+            if (node->getBody())
+            {
+                newBody->getSequence()->push_back(node->getBody());
+            }
+            newBody->getSequence()->push_back(
+                createTempAssignment(node->getCondition()->deepCopy()));
+
+            // Can't use queueReplacement to replace old body, since it may have been nullptr.
+            // It's safe to do the replacements in place here - this node won't be traversed
+            // further.
+            node->setBody(newBody);
+            node->setCondition(createTempSymbol(node->getCondition()->getType()));
+        }
+        else if (loopType == ELoopDoWhile)
         {
-            ASSERT(loopType == ELoopFor);
-            // Move the loop expression to inside the loop.
+            // Transform:
+            //   do {
+            //     body;
+            //   } while (expr);
+            // into
+            //   bool s0 = true;
+            //   do {
+            //     { body; }
+            //     s0 = expr;
+            //   } while (s0);
+            TIntermSequence tempInitSeq;
+            tempInitSeq.push_back(createTempInitDeclaration(CreateBoolConstantNode(true)));
+            insertStatementsInParentBlock(tempInitSeq);
+
+            TIntermBlock *newBody = new TIntermBlock();
+            if (node->getBody())
+            {
+                newBody->getSequence()->push_back(node->getBody());
+            }
+            newBody->getSequence()->push_back(
+                createTempAssignment(node->getCondition()->deepCopy()));
+
+            // Can't use queueReplacement to replace old body, since it may have been nullptr.
+            // It's safe to do the replacements in place here - this node won't be traversed
+            // further.
+            node->setBody(newBody);
+            node->setCondition(createTempSymbol(node->getCondition()->getType()));
+        }
+        else if (loopType == ELoopFor)
+        {
+            // Move the loop condition inside the loop.
             // Transform:
             //   for (init; expr; exprB) { body; }
             // into
-            //   for (init; expr; ) { { body; } exprB; }
-            TIntermTyped *loopExpression = node->getExpression();
-            node->setExpression(nullptr);
-            TIntermBlock *oldBody = node->getBody();
-            node->setBody(new TIntermBlock());
-            if (oldBody != nullptr)
+            //   {
+            //     init;
+            //     bool s0 = expr;
+            //     while (s0) { { body; } exprB; s0 = expr; }
+            //   }
+            TIntermBlock *loopScope = new TIntermBlock();
+            if (node->getInit())
             {
-                node->getBody()->getSequence()->push_back(oldBody);
+                loopScope->getSequence()->push_back(node->getInit());
+            }
+            loopScope->getSequence()->push_back(
+                createTempInitDeclaration(node->getCondition()->deepCopy()));
+
+            TIntermBlock *whileLoopBody = new TIntermBlock();
+            if (node->getBody())
+            {
+                whileLoopBody->getSequence()->push_back(node->getBody());
             }
-            node->getBody()->getSequence()->push_back(loopExpression);
+            if (node->getExpression())
+            {
+                whileLoopBody->getSequence()->push_back(node->getExpression());
+            }
+            whileLoopBody->getSequence()->push_back(
+                createTempAssignment(node->getCondition()->deepCopy()));
+            TIntermLoop *whileLoop = new TIntermLoop(
+                ELoopWhile, nullptr, createTempSymbol(node->getCondition()->getType()), nullptr,
+                whileLoopBody);
+            loopScope->getSequence()->push_back(whileLoop);
+            queueReplacementWithParent(getAncestorNode(1), node, loopScope,
+                                       OriginalNode::IS_DROPPED);
         }
     }
 
-    mInsideLoopConditionOrExpression = false;
+    mInsideLoopInitConditionOrExpression = false;
 
     if (!mFoundLoopToChange && node->getBody())
         node->getBody()->traverse(this);
 
     decrementDepth();
 }
 
 }  // namespace
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/TranslatorGLSL.cpp
+++ b/gfx/angle/src/compiler/translator/TranslatorGLSL.cpp
@@ -53,17 +53,19 @@ void TranslatorGLSL::translate(TIntermNo
     // Write pragmas after extensions because some drivers consider pragmas
     // like non-preprocessor tokens.
     writePragma(compileOptions);
 
     // If flattening the global invariant pragma, write invariant declarations for built-in
     // variables. It should be harmless to do this twice in the case that the shader also explicitly
     // did this. However, it's important to emit invariant qualifiers only for those built-in
     // variables that are actually used, to avoid affecting the behavior of the shader.
-    if ((compileOptions & SH_FLATTEN_PRAGMA_STDGL_INVARIANT_ALL) && getPragma().stdgl.invariantAll)
+    if ((compileOptions & SH_FLATTEN_PRAGMA_STDGL_INVARIANT_ALL) != 0 &&
+        getPragma().stdgl.invariantAll &&
+        !sh::RemoveInvariant(getShaderType(), getShaderVersion(), getOutputType(), compileOptions))
     {
         ASSERT(wereVariablesCollected());
 
         switch (getShaderType())
         {
             case GL_VERTEX_SHADER:
                 sink << "invariant gl_Position;\n";
 
@@ -246,29 +248,30 @@ void TranslatorGLSL::writeExtensionBehav
             {
                 sink << "#extension GL_ARB_draw_buffers : " << getBehaviorString(iter.second)
                      << "\n";
             }
         }
     }
 
     // GLSL ES 3 explicit location qualifiers need to use an extension before GLSL 330
-    if (getShaderVersion() >= 300 && getOutputType() < SH_GLSL_330_CORE_OUTPUT)
+    if (getShaderVersion() >= 300 && getOutputType() < SH_GLSL_330_CORE_OUTPUT &&
+        getShaderType() != GL_COMPUTE_SHADER)
     {
         sink << "#extension GL_ARB_explicit_attrib_location : require\n";
     }
 
     // Need to enable gpu_shader5 to have index constant sampler array indexing
-    if (getOutputType() != SH_ESSL_OUTPUT && getOutputType() < SH_GLSL_400_CORE_OUTPUT  &&
+    if (getOutputType() != SH_ESSL_OUTPUT && getOutputType() < SH_GLSL_400_CORE_OUTPUT &&
         getShaderVersion() == 100)
     {
-        // Don't use "require" on to avoid breaking WebGL 1 on drivers that silently
-        // support index constant sampler array indexing, but don't have the extension or
-        // on drivers that don't have the extension at all as it would break WebGL 1 for
-        // some users.
+        // Don't use "require" on to avoid breaking WebGL 1 on drivers that silently
+        // support index constant sampler array indexing, but don't have the extension or
+        // on drivers that don't have the extension at all as it would break WebGL 1 for
+        // some users.
         sink << "#extension GL_ARB_gpu_shader5 : enable\n";
     }
 
     TExtensionGLSL extensionGLSL(getOutputType());
     root->traverse(&extensionGLSL);
 
     for (const auto &ext : extensionGLSL.getEnabledExtensions())
     {
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/TranslatorHLSL.cpp
+++ b/gfx/angle/src/compiler/translator/TranslatorHLSL.cpp
@@ -34,26 +34,29 @@ TranslatorHLSL::TranslatorHLSL(sh::GLenu
 
 void TranslatorHLSL::translate(TIntermNode *root, ShCompileOptions compileOptions)
 {
     const ShBuiltInResources &resources = getResources();
     int numRenderTargets = resources.EXT_draw_buffers ? resources.MaxDrawBuffers : 1;
 
     sh::AddDefaultReturnStatements(root);
 
-    SeparateDeclarations(root);
-
     // Note that SimplifyLoopConditions needs to be run before any other AST transformations that
     // may need to generate new statements from loop conditions or loop expressions.
     SimplifyLoopConditions(root,
                            IntermNodePatternMatcher::kExpressionReturningArray |
                                IntermNodePatternMatcher::kUnfoldedShortCircuitExpression |
-                               IntermNodePatternMatcher::kDynamicIndexingOfVectorOrMatrixInLValue,
+                               IntermNodePatternMatcher::kDynamicIndexingOfVectorOrMatrixInLValue |
+                               IntermNodePatternMatcher::kMultiDeclaration,
                            getTemporaryIndex(), getSymbolTable(), getShaderVersion());
 
+    // Note that separate declarations need to be run before other AST transformations that
+    // generate new statements from expressions.
+    SeparateDeclarations(root);
+
     SplitSequenceOperator(root,
                           IntermNodePatternMatcher::kExpressionReturningArray |
                               IntermNodePatternMatcher::kUnfoldedShortCircuitExpression |
                               IntermNodePatternMatcher::kDynamicIndexingOfVectorOrMatrixInLValue,
                           getTemporaryIndex(), getSymbolTable(), getShaderVersion());
 
     // Note that SeparateDeclarations needs to be run before UnfoldShortCircuitToIf.
     UnfoldShortCircuitToIf(root, getTemporaryIndex());
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/ValidateLimitations.cpp
+++ b/gfx/angle/src/compiler/translator/ValidateLimitations.cpp
@@ -11,52 +11,62 @@
 #include "angle_gl.h"
 
 namespace sh
 {
 
 namespace
 {
 
+int GetLoopSymbolId(TIntermLoop *loop)
+{
+    // Here we assume all the operations are valid, because the loop node is
+    // already validated before this call.
+    TIntermSequence *declSeq = loop->getInit()->getAsDeclarationNode()->getSequence();
+    TIntermBinary *declInit  = (*declSeq)[0]->getAsBinaryNode();
+    TIntermSymbol *symbol    = declInit->getLeft()->getAsSymbolNode();
+
+    return symbol->getId();
+}
+
 // Traverses a node to check if it represents a constant index expression.
 // Definition:
 // constant-index-expressions are a superset of constant-expressions.
 // Constant-index-expressions can include loop indices as defined in
 // GLSL ES 1.0 spec, Appendix A, section 4.
 // The following are constant-index-expressions:
 // - Constant expressions
 // - Loop indices as defined in section 4
 // - Expressions composed of both of the above
 class ValidateConstIndexExpr : public TIntermTraverser
 {
   public:
-    ValidateConstIndexExpr(TLoopStack& stack)
-        : TIntermTraverser(true, false, false),
-          mValid(true),
-          mLoopStack(stack)
+    ValidateConstIndexExpr(const std::vector<int> &loopSymbols)
+        : TIntermTraverser(true, false, false), mValid(true), mLoopSymbolIds(loopSymbols)
     {
     }
 
     // Returns true if the parsed node represents a constant index expression.
     bool isValid() const { return mValid; }
 
     void visitSymbol(TIntermSymbol *symbol) override
     {
         // Only constants and loop indices are allowed in a
         // constant index expression.
         if (mValid)
         {
-            mValid = (symbol->getQualifier() == EvqConst) ||
-                     (mLoopStack.findLoop(symbol));
+            bool isLoopSymbol = std::find(mLoopSymbolIds.begin(), mLoopSymbolIds.end(),
+                                          symbol->getId()) != mLoopSymbolIds.end();
+            mValid = (symbol->getQualifier() == EvqConst) || isLoopSymbol;
         }
     }
 
   private:
     bool mValid;
-    TLoopStack& mLoopStack;
+    const std::vector<int> mLoopSymbolIds;
 };
 
 }  // namespace anonymous
 
 ValidateLimitations::ValidateLimitations(sh::GLenum shaderType, TInfoSinkBase *sink)
     : TIntermTraverser(true, false, false),
       mShaderType(shaderType),
       mSink(sink),
@@ -75,19 +85,19 @@ bool ValidateLimitations::IsLimitedForLo
     validate.mValidateInnerLoops = false;
     if (!validate.validateLoopType(loop))
         return false;
     if (!validate.validateForLoopHeader(loop))
         return false;
     TIntermNode *body = loop->getBody();
     if (body != nullptr)
     {
-        validate.mLoopStack.push(loop);
+        validate.mLoopSymbolIds.push_back(GetLoopSymbolId(loop));
         body->traverse(&validate);
-        validate.mLoopStack.pop();
+        validate.mLoopSymbolIds.pop_back();
     }
     return (validate.mNumErrors == 0);
 }
 
 bool ValidateLimitations::visitBinary(Visit, TIntermBinary *node)
 {
     // Check if loop index is modified in the loop body.
     validateOperation(node, node->getLeft());
@@ -135,19 +145,19 @@ bool ValidateLimitations::visitLoop(Visi
         return false;
 
     if (!validateForLoopHeader(node))
         return false;
 
     TIntermNode *body = node->getBody();
     if (body != NULL)
     {
-        mLoopStack.push(node);
+        mLoopSymbolIds.push_back(GetLoopSymbolId(node));
         body->traverse(this);
-        mLoopStack.pop();
+        mLoopSymbolIds.pop_back();
     }
 
     // The loop is fully processed - no need to visit children.
     return false;
 }
 
 void ValidateLimitations::error(TSourceLoc loc,
                                 const char *reason, const char *token)
@@ -158,22 +168,23 @@ void ValidateLimitations::error(TSourceL
         mSink->location(loc);
         (*mSink) << "'" << token << "' : " << reason << "\n";
     }
     ++mNumErrors;
 }
 
 bool ValidateLimitations::withinLoopBody() const
 {
-    return !mLoopStack.empty();
+    return !mLoopSymbolIds.empty();
 }
 
 bool ValidateLimitations::isLoopIndex(TIntermSymbol *symbol)
 {
-    return mLoopStack.findLoop(symbol) != NULL;
+    return std::find(mLoopSymbolIds.begin(), mLoopSymbolIds.end(), symbol->getId()) !=
+           mLoopSymbolIds.end();
 }
 
 bool ValidateLimitations::validateLoopType(TIntermLoop *node)
 {
     TLoopType type = node->getType();
     if (type == ELoopFor)
         return true;
 
@@ -469,17 +480,17 @@ bool ValidateLimitations::isConstExpr(TI
     ASSERT(node != nullptr);
     return node->getAsConstantUnion() != nullptr && node->getAsTyped()->getQualifier() == EvqConst;
 }
 
 bool ValidateLimitations::isConstIndexExpr(TIntermNode *node)
 {
     ASSERT(node != NULL);
 
-    ValidateConstIndexExpr validate(mLoopStack);
+    ValidateConstIndexExpr validate(mLoopSymbolIds);
     node->traverse(&validate);
     return validate.isValid();
 }
 
 bool ValidateLimitations::validateIndexing(TIntermBinary *node)
 {
     ASSERT((node->getOp() == EOpIndexDirect) ||
            (node->getOp() == EOpIndexIndirect));
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/ValidateLimitations.h
+++ b/gfx/angle/src/compiler/translator/ValidateLimitations.h
@@ -3,17 +3,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
 
 #ifndef COMPILER_TRANSLATOR_VALIDATELIMITATIONS_H_
 #define COMPILER_TRANSLATOR_VALIDATELIMITATIONS_H_
 
 #include "compiler/translator/IntermNode.h"
-#include "compiler/translator/LoopInfo.h"
 
 namespace sh
 {
 
 class TInfoSinkBase;
 
 // Traverses intermediate tree to ensure that the shader does not exceed the
 // minimum functionality mandated in GLSL 1.0 spec, Appendix A.
@@ -53,16 +52,16 @@ class ValidateLimitations : public TInte
     // mandated in GLSL 1.0 spec, Appendix A, Section 5.
     bool isConstExpr(TIntermNode *node);
     bool isConstIndexExpr(TIntermNode *node);
     bool validateIndexing(TIntermBinary *node);
 
     sh::GLenum mShaderType;
     TInfoSinkBase *mSink;
     int mNumErrors;
-    TLoopStack mLoopStack;
+    std::vector<int> mLoopSymbolIds;
     bool mValidateIndexing;
     bool mValidateInnerLoops;
 };
 
 }  // namespace sh
 
 #endif // COMPILER_TRANSLATOR_VALIDATELIMITATIONS_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/VersionGLSL.cpp
+++ b/gfx/angle/src/compiler/translator/VersionGLSL.cpp
@@ -1,16 +1,18 @@
 //
 // Copyright (c) 2002-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 "compiler/translator/VersionGLSL.h"
 
+#include "angle_gl.h"
+
 namespace sh
 {
 
 int ShaderOutputTypeToGLSLVersion(ShShaderOutput output)
 {
     switch (output)
     {
       case SH_GLSL_130_OUTPUT:           return GLSL_VERSION_130;
@@ -50,16 +52,20 @@ TVersionGLSL::TVersionGLSL(sh::GLenum ty
                            ShShaderOutput output)
     : TIntermTraverser(true, false, false)
 {
     mVersion = ShaderOutputTypeToGLSLVersion(output);
     if (pragma.stdgl.invariantAll)
     {
         ensureVersionIsAtLeast(GLSL_VERSION_120);
     }
+    if (type == GL_COMPUTE_SHADER)
+    {
+        ensureVersionIsAtLeast(GLSL_VERSION_430);
+    }
 }
 
 void TVersionGLSL::visitSymbol(TIntermSymbol *node)
 {
     if (node->getSymbol() == "gl_PointCoord")
     {
         ensureVersionIsAtLeast(GLSL_VERSION_120);
     }
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/glslang_lex.cpp
+++ b/gfx/angle/src/compiler/translator/glslang_lex.cpp
@@ -2333,17 +2333,17 @@ static int yy_get_next_buffer (yyscan_t 
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
 		/* don't do the read, it's not guaranteed to return an EOF,
 		 * just force an EOF
 		 */
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
 
 	else
 		{
-			int num_to_read =
+			yy_size_t num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
 			{ /* Not enough room in the buffer - grow it. */
 
 			/* just a shorter name for the current buffer */
 			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/util.cpp
+++ b/gfx/angle/src/compiler/translator/util.cpp
@@ -3,39 +3,190 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
 
 #include "compiler/translator/util.h"
 
 #include <limits>
 
+#include "common/utilities.h"
 #include "compiler/preprocessor/numeric_lex.h"
 #include "compiler/translator/SymbolTable.h"
-#include "common/utilities.h"
-
-bool strtof_clamp(const std::string &str, float *value)
-{
-    bool success = pp::numeric_lex_float(str, value);
-    if (!success)
-        *value = std::numeric_limits<float>::max();
-    return success;
-}
 
 bool atoi_clamp(const char *str, unsigned int *value)
 {
     bool success = pp::numeric_lex_int(str, value);
     if (!success)
         *value = std::numeric_limits<unsigned int>::max();
     return success;
 }
 
 namespace sh
 {
 
+float NumericLexFloat32OutOfRangeToInfinity(const std::string &str)
+{
+    // Parses a decimal string using scientific notation into a floating point number.
+    // Out-of-range values are converted to infinity. Values that are too small to be
+    // represented are converted to zero.
+
+    // The mantissa in decimal scientific notation. The magnitude of the mantissa integer does not
+    // matter.
+    unsigned int decimalMantissa = 0;
+    size_t i                     = 0;
+    bool decimalPointSeen        = false;
+    bool nonZeroSeenInMantissa   = false;
+
+    // The exponent offset reflects the position of the decimal point.
+    int exponentOffset = -1;
+    while (i < str.length())
+    {
+        const char c = str[i];
+        if (c == 'e' || c == 'E')
+        {
+            break;
+        }
+        if (c == '.')
+        {
+            decimalPointSeen = true;
+            ++i;
+            continue;
+        }
+
+        unsigned int digit = static_cast<unsigned int>(c - '0');
+        ASSERT(digit < 10u);
+        if (digit != 0u)
+        {
+            nonZeroSeenInMantissa = true;
+        }
+        if (nonZeroSeenInMantissa)
+        {
+            // Add bits to the mantissa until space runs out in 32-bit int. This should be
+            // enough precision to make the resulting binary mantissa accurate to 1 ULP.
+            if (decimalMantissa <= (std::numeric_limits<unsigned int>::max() - 9u) / 10u)
+            {
+                decimalMantissa = decimalMantissa * 10u + digit;
+            }
+            if (!decimalPointSeen)
+            {
+                ++exponentOffset;
+            }
+        }
+        else if (decimalPointSeen)
+        {
+            --exponentOffset;
+        }
+        ++i;
+    }
+    if (decimalMantissa == 0)
+    {
+        return 0.0f;
+    }
+    int exponent = 0;
+    if (i < str.length())
+    {
+        ASSERT(str[i] == 'e' || str[i] == 'E');
+        ++i;
+        bool exponentOutOfRange = false;
+        bool negativeExponent   = false;
+        if (str[i] == '-')
+        {
+            negativeExponent = true;
+            ++i;
+        }
+        else if (str[i] == '+')
+        {
+            ++i;
+        }
+        while (i < str.length())
+        {
+            const char c       = str[i];
+            unsigned int digit = static_cast<unsigned int>(c - '0');
+            ASSERT(digit < 10u);
+            if (exponent <= (std::numeric_limits<int>::max() - 9) / 10)
+            {
+                exponent = exponent * 10 + digit;
+            }
+            else
+            {
+                exponentOutOfRange = true;
+            }
+            ++i;
+        }
+        if (negativeExponent)
+        {
+            exponent = -exponent;
+        }
+        if (exponentOutOfRange)
+        {
+            if (negativeExponent)
+            {
+                return 0.0f;
+            }
+            else
+            {
+                return std::numeric_limits<float>::infinity();
+            }
+        }
+    }
+    // Do the calculation in 64-bit to avoid overflow.
+    long long exponentLong =
+        static_cast<long long>(exponent) + static_cast<long long>(exponentOffset);
+    if (exponentLong > std::numeric_limits<float>::max_exponent10)
+    {
+        return std::numeric_limits<float>::infinity();
+    }
+    else if (exponentLong < std::numeric_limits<float>::min_exponent10)
+    {
+        return 0.0f;
+    }
+    // The exponent is in range, so we need to actually evaluate the float.
+    exponent     = static_cast<int>(exponentLong);
+    double value = decimalMantissa;
+
+    // Calculate the exponent offset to normalize the mantissa.
+    int normalizationExponentOffset = 0;
+    while (decimalMantissa >= 10u)
+    {
+        --normalizationExponentOffset;
+        decimalMantissa /= 10u;
+    }
+    // Apply the exponent.
+    value *= std::pow(10.0, static_cast<double>(exponent + normalizationExponentOffset));
+    if (value > static_cast<double>(std::numeric_limits<float>::max()))
+    {
+        return std::numeric_limits<float>::infinity();
+    }
+    if (value < static_cast<double>(std::numeric_limits<float>::min()))
+    {
+        return 0.0f;
+    }
+    return static_cast<float>(value);
+}
+
+bool strtof_clamp(const std::string &str, float *value)
+{
+    // Try the standard float parsing path first.
+    bool success = pp::numeric_lex_float(str, value);
+
+    // If the standard path doesn't succeed, take the path that can handle the following corner
+    // cases:
+    //   1. The decimal mantissa is very small but the exponent is very large, putting the resulting
+    //   number inside the float range.
+    //   2. The decimal mantissa is very large but the exponent is very small, putting the resulting
+    //   number inside the float range.
+    //   3. The value is out-of-range and should be evaluated as infinity.
+    //   4. The value is too small and should be evaluated as zero.
+    // See ESSL 3.00.6 section 4.1.4 for the relevant specification.
+    if (!success)
+        *value = NumericLexFloat32OutOfRangeToInfinity(str);
+    return !gl::isInf(*value);
+}
+
 GLenum GLVariableType(const TType &type)
 {
     if (type.getBasicType() == EbtFloat)
     {
         if (type.isScalar())
         {
             return GL_FLOAT;
         }
old mode 100755
new mode 100644
--- a/gfx/angle/src/compiler/translator/util.h
+++ b/gfx/angle/src/compiler/translator/util.h
@@ -10,30 +10,34 @@
 #include <stack>
 
 #include "angle_gl.h"
 #include <GLSLANG/ShaderLang.h>
 
 #include "compiler/translator/Operator.h"
 #include "compiler/translator/Types.h"
 
-// strtof_clamp is like strtof 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.
-bool strtof_clamp(const std::string &str, float *value);
-
 // If overflow happens, clamp the value to UINT_MIN or UINT_MAX.
 // Return false if overflow happens.
 bool atoi_clamp(const char *str, unsigned int *value);
 
 namespace sh
 {
 class TSymbolTable;
 
+float NumericLexFloat32OutOfRangeToInfinity(const std::string &str);
+
+// strtof_clamp is like strtof but
+//   1. it forces C locale, i.e. forcing '.' as decimal point.
+//   2. it sets the value to infinity if overflow happens.
+//   3. str should be guaranteed to be in the valid format for a floating point number as defined
+//      by the grammar in the ESSL 3.00.6 spec section 4.1.4.
+// Return false if overflow happens.
+bool strtof_clamp(const std::string &str, float *value);
+
 GLenum GLVariableType(const TType &type);
 GLenum GLVariablePrecision(const TType &type);
 bool IsVaryingIn(TQualifier qualifier);
 bool IsVaryingOut(TQualifier qualifier);
 bool IsVarying(TQualifier qualifier);
 InterpolationType GetInterpolationType(TQualifier qualifier);
 TString ArrayString(const TType &type);
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Caps.cpp
+++ b/gfx/angle/src/libANGLE/Caps.cpp
@@ -1,18 +1,21 @@
 //
 // Copyright (c) 2014 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 "libANGLE/Caps.h"
+
 #include "common/debug.h"
 #include "common/angleutils.h"
 
+#include "libANGLE/formatutils.h"
+
 #include "angle_gl.h"
 
 #include <algorithm>
 #include <sstream>
 
 static void InsertExtensionString(const std::string &extension, bool supported, std::vector<std::string> *extensionVector)
 {
     if (supported)
@@ -51,16 +54,32 @@ GLuint TextureCaps::getNearestSamples(GL
         {
             return samples;
         }
     }
 
     return 0;
 }
 
+TextureCaps GenerateMinimumTextureCaps(GLenum internalFormat,
+                                       const Version &clientVersion,
+                                       const Extensions &extensions)
+{
+    TextureCaps caps;
+
+    const InternalFormat &internalFormatInfo = GetInternalFormatInfo(internalFormat);
+    caps.texturable = internalFormatInfo.textureSupport(clientVersion, extensions);
+    caps.renderable = internalFormatInfo.renderSupport(clientVersion, extensions);
+    caps.filterable = internalFormatInfo.filterSupport(clientVersion, extensions);
+
+    caps.sampleCounts.insert(0);
+
+    return caps;
+}
+
 void TextureCapsMap::insert(GLenum internalFormat, const TextureCaps &caps)
 {
     mCapsMap[internalFormat] = caps;
 }
 
 void TextureCapsMap::remove(GLenum internalFormat)
 {
     InternalFormatToCapsMap::iterator i = mCapsMap.find(internalFormat);
@@ -92,16 +111,30 @@ TextureCapsMap::const_iterator TextureCa
     return mCapsMap.end();
 }
 
 size_t TextureCapsMap::size() const
 {
     return mCapsMap.size();
 }
 
+TextureCapsMap GenerateMinimumTextureCapsMap(const Version &clientVersion,
+                                             const Extensions &extensions)
+{
+    TextureCapsMap capsMap;
+
+    for (GLenum internalFormat : GetAllSizedInternalFormats())
+    {
+        capsMap.insert(internalFormat,
+                       GenerateMinimumTextureCaps(internalFormat, clientVersion, extensions));
+    }
+
+    return capsMap;
+}
+
 Extensions::Extensions()
     : elementIndexUint(false),
       packedDepthStencil(false),
       getProgramBinary(false),
       rgb8rgba8(false),
       textureFormatBGRA8888(false),
       readFormatBGRA(false),
       pixelBufferObject(false),
@@ -163,16 +196,17 @@ Extensions::Extensions()
       maxLabelLength(0),
       noError(false),
       lossyETCDecode(false),
       bindUniformLocation(false),
       syncQuery(false),
       copyTexture(false),
       copyCompressedTexture(false),
       webglCompatibility(false),
+      requestExtension(false),
       bindGeneratesResource(false),
       robustClientMemory(false),
       textureSRGBDecode(false),
       sRGBWriteControl(false),
       colorBufferFloat(false),
       multisampleCompatibility(false),
       framebufferMixedSamples(false),
       textureNorm16(false),
@@ -501,17 +535,17 @@ void Extensions::setTextureExtensionSupp
     textureNorm16             = DetermineTextureNorm16Support(textureCaps);
 }
 
 const ExtensionInfoMap &GetExtensionInfoMap()
 {
     auto buildExtensionInfoMap = []() {
         auto enableableExtension = [](ExtensionInfo::ExtensionBool member) {
             ExtensionInfo info;
-            info.Enableable       = true;
+            info.Requestable      = true;
             info.ExtensionsMember = member;
             return info;
         };
 
         auto esOnlyExtension = [](ExtensionInfo::ExtensionBool member) {
             ExtensionInfo info;
             info.ExtensionsMember = member;
             return info;
@@ -580,16 +614,17 @@ const ExtensionInfoMap &GetExtensionInfo
         // TODO(jmadill): Enable this when complete.
         //map["GL_KHR_no_error"] = esOnlyExtension(&Extensions::noError);
         map["GL_ANGLE_lossy_etc_decode"] = esOnlyExtension(&Extensions::lossyETCDecode);
         map["GL_CHROMIUM_bind_uniform_location"] = esOnlyExtension(&Extensions::bindUniformLocation);
         map["GL_CHROMIUM_sync_query"] = esOnlyExtension(&Extensions::syncQuery);
         map["GL_CHROMIUM_copy_texture"] = esOnlyExtension(&Extensions::copyTexture);
         map["GL_CHROMIUM_copy_compressed_texture"] = esOnlyExtension(&Extensions::copyCompressedTexture);
         map["GL_ANGLE_webgl_compatibility"] = esOnlyExtension(&Extensions::webglCompatibility);
+        map["GL_ANGLE_request_extension"] = esOnlyExtension(&Extensions::requestExtension);
         map["GL_CHROMIUM_bind_generates_resource"] = esOnlyExtension(&Extensions::bindGeneratesResource);
         map["GL_ANGLE_robust_client_memory"] = esOnlyExtension(&Extensions::robustClientMemory);
         map["GL_EXT_texture_sRGB_decode"] = esOnlyExtension(&Extensions::textureSRGBDecode);
         map["GL_EXT_sRGB_write_control"] = esOnlyExtension(&Extensions::sRGBWriteControl);
         map["GL_EXT_multisample_compatibility"] = esOnlyExtension(&Extensions::multisampleCompatibility);
         map["GL_CHROMIUM_framebuffer_mixed_samples"] = esOnlyExtension(&Extensions::framebufferMixedSamples);
         map["GL_EXT_texture_norm16"] = esOnlyExtension(&Extensions::textureNorm16);
         map["GL_CHROMIUM_path_rendering"] = esOnlyExtension(&Extensions::pathRendering);
@@ -597,48 +632,47 @@ const ExtensionInfoMap &GetExtensionInfo
 
         return map;
     };
 
     static const ExtensionInfoMap extensionInfo = buildExtensionInfoMap();
     return extensionInfo;
 }
 
-TypePrecision::TypePrecision()
+TypePrecision::TypePrecision() : range({{0, 0}}), precision(0)
 {
-    range[0] = 0;
-    range[1] = 0;
-    precision = 0;
 }
 
 void TypePrecision::setIEEEFloat()
 {
-    range[0] = 127;
-    range[1] = 127;
+    range     = {{127, 127}};
     precision = 23;
 }
 
 void TypePrecision::setTwosComplementInt(unsigned int bits)
 {
-    range[0] = GLint(bits) - 1;
-    range[1] = GLint(bits) - 2;
+    range     = {{static_cast<GLint>(bits) - 1, static_cast<GLint>(bits) - 2}};
     precision = 0;
 }
 
+void TypePrecision::setSimulatedFloat(unsigned int r, unsigned int p)
+{
+    range     = {{static_cast<GLint>(r), static_cast<GLint>(r)}};
+    precision = static_cast<GLint>(p);
+}
+
 void TypePrecision::setSimulatedInt(unsigned int r)
 {
-    range[0] = GLint(r);
-    range[1] = GLint(r);
+    range     = {{static_cast<GLint>(r), static_cast<GLint>(r)}};
     precision = 0;
 }
 
 void TypePrecision::get(GLint *returnRange, GLint *returnPrecision) const
 {
-    returnRange[0] = range[0];
-    returnRange[1] = range[1];
+    std::copy(range.begin(), range.end(), returnRange);
     *returnPrecision = precision;
 }
 
 Caps::Caps()
     : maxElementIndex(0),
       max3DTextureSize(0),
       max2DTextureSize(0),
       maxArrayTextureLayers(0),
@@ -746,16 +780,205 @@ Caps::Caps()
 {
     for (size_t i = 0; i < 3; ++i)
     {
         maxComputeWorkGroupCount[i] = 0;
         maxComputeWorkGroupSize[i]  = 0;
     }
 }
 
+Caps GenerateMinimumCaps(const Version &clientVersion)
+{
+    Caps caps;
+
+    if (clientVersion >= Version(2, 0))
+    {
+        // Table 6.18
+        caps.max2DTextureSize      = 64;
+        caps.maxCubeMapTextureSize = 16;
+        caps.maxViewportWidth      = caps.max2DTextureSize;
+        caps.maxViewportHeight     = caps.max2DTextureSize;
+        caps.minAliasedPointSize   = 1;
+        caps.maxAliasedPointSize   = 1;
+        caps.minAliasedLineWidth   = 1;
+        caps.maxAliasedLineWidth   = 1;
+
+        // Table 6.19
+        caps.vertexHighpFloat.setSimulatedFloat(62, 16);
+        caps.vertexMediumpFloat.setSimulatedFloat(14, 10);
+        caps.vertexLowpFloat.setSimulatedFloat(1, 8);
+        caps.vertexHighpInt.setSimulatedInt(16);
+        caps.vertexMediumpInt.setSimulatedInt(10);
+        caps.vertexLowpInt.setSimulatedInt(8);
+        caps.fragmentHighpFloat.setSimulatedFloat(62, 16);
+        caps.fragmentMediumpFloat.setSimulatedFloat(14, 10);
+        caps.fragmentLowpFloat.setSimulatedFloat(1, 8);
+        caps.fragmentHighpInt.setSimulatedInt(16);
+        caps.fragmentMediumpInt.setSimulatedInt(10);
+        caps.fragmentLowpInt.setSimulatedInt(8);
+
+        // Table 6.20
+        caps.maxVertexAttributes          = 8;
+        caps.maxVertexUniformVectors      = 128;
+        caps.maxVaryingVectors            = 8;
+        caps.maxCombinedTextureImageUnits = 8;
+        caps.maxTextureImageUnits         = 8;
+        caps.maxFragmentUniformVectors    = 16;
+        caps.maxRenderbufferSize          = 1;
+    }
+
+    if (clientVersion >= Version(3, 0))
+    {
+        // Table 6.28
+        caps.maxElementIndex       = (1 << 24) - 1;
+        caps.max3DTextureSize      = 256;
+        caps.max2DTextureSize      = 2048;
+        caps.maxArrayTextureLayers = 256;
+        caps.maxLODBias            = 2.0f;
+        caps.maxCubeMapTextureSize = 2048;
+        caps.maxRenderbufferSize   = 2048;
+        caps.maxDrawBuffers        = 4;
+        caps.maxColorAttachments   = 4;
+        caps.maxViewportWidth      = caps.max2DTextureSize;
+        caps.maxViewportHeight     = caps.max2DTextureSize;
+
+        // Table 6.29
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_R11_EAC);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_SIGNED_R11_EAC);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_RG11_EAC);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_SIGNED_RG11_EAC);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_RGB8_ETC2);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_SRGB8_ETC2);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_RGBA8_ETC2_EAC);
+        caps.compressedTextureFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC);
+        caps.vertexHighpFloat.setIEEEFloat();
+        caps.vertexHighpInt.setTwosComplementInt(32);
+        caps.vertexMediumpInt.setTwosComplementInt(16);
+        caps.vertexLowpInt.setTwosComplementInt(8);
+        caps.fragmentHighpFloat.setIEEEFloat();
+        caps.fragmentHighpInt.setSimulatedInt(32);
+        caps.fragmentMediumpInt.setTwosComplementInt(16);
+        caps.fragmentLowpInt.setTwosComplementInt(8);
+        caps.maxServerWaitTimeout = 0;
+
+        // Table 6.31
+        caps.maxVertexAttributes        = 16;
+        caps.maxVertexUniformComponents = 1024;
+        caps.maxVertexUniformVectors    = 256;
+        caps.maxVertexUniformBlocks     = 12;
+        caps.maxVertexOutputComponents  = 64;
+        caps.maxVertexTextureImageUnits = 16;
+
+        // Table 6.32
+        caps.maxFragmentUniformComponents = 896;
+        caps.maxFragmentUniformVectors    = 224;
+        caps.maxFragmentUniformBlocks     = 12;
+        caps.maxFragmentInputComponents   = 60;
+        caps.maxTextureImageUnits         = 16;
+        caps.minProgramTexelOffset        = -8;
+        caps.maxProgramTexelOffset        = 7;
+
+        // Table 6.33
+        caps.maxUniformBufferBindings     = 24;
+        caps.maxUniformBlockSize          = 16384;
+        caps.uniformBufferOffsetAlignment = 256;
+        caps.maxCombinedUniformBlocks     = 24;
+        caps.maxCombinedVertexUniformComponents =
+            caps.maxVertexUniformBlocks * (caps.maxUniformBlockSize / 4) +
+            caps.maxVertexUniformComponents;
+        caps.maxCombinedFragmentUniformComponents =
+            caps.maxFragmentUniformBlocks * (caps.maxUniformBlockSize / 4) +
+            caps.maxFragmentUniformComponents;
+        caps.maxVaryingComponents         = 60;
+        caps.maxVaryingVectors            = 15;
+        caps.maxCombinedTextureImageUnits = 32;
+
+        // Table 6.34
+        caps.maxTransformFeedbackInterleavedComponents = 64;
+        caps.maxTransformFeedbackSeparateAttributes    = 4;
+        caps.maxTransformFeedbackSeparateComponents    = 4;
+
+        // Table 3.35
+        caps.maxSamples = 4;
+    }
+
+    if (clientVersion >= Version(3, 1))
+    {
+        // Table 20.40
+        caps.maxFramebufferWidth    = 2048;
+        caps.maxFramebufferHeight   = 2048;
+        caps.maxFramebufferSamples  = 4;
+        caps.maxSampleMaskWords     = 1;
+        caps.maxColorTextureSamples = 1;
+        caps.maxDepthTextureSamples = 1;
+        caps.maxIntegerSamples      = 1;
+
+        // Table 20.41
+        caps.maxVertexAttribRelativeOffset = 2047;
+        caps.maxVertexAttribBindings       = 16;
+        caps.maxVertexAttribStride         = 2048;
+
+        // Table 20.43
+        caps.maxVertexAtomicCounterBuffers = 0;
+        caps.maxVertexAtomicCounters       = 0;
+        caps.maxVertexImageUniforms        = 0;
+        caps.maxVertexShaderStorageBlocks  = 0;
+
+        // Table 20.44
+        caps.maxFragmentUniformComponents    = 1024;
+        caps.maxFragmentUniformVectors       = 256;
+        caps.maxFragmentAtomicCounterBuffers = 0;
+        caps.maxFragmentAtomicCounters       = 0;
+        caps.maxFragmentImageUniforms        = 0;
+        caps.maxFragmentShaderStorageBlocks  = 0;
+        caps.minProgramTextureGatherOffset   = 0;
+        caps.maxProgramTextureGatherOffset   = 0;
+
+        // Table 20.45
+        caps.maxComputeWorkGroupCount       = {{65535, 65535, 65535}};
+        caps.maxComputeWorkGroupSize        = {{128, 128, 64}};
+        caps.maxComputeWorkGroupInvocations = 12;
+        caps.maxComputeUniformBlocks        = 12;
+        caps.maxComputeTextureImageUnits    = 16;
+        caps.maxComputeSharedMemorySize     = 16384;
+        caps.maxComputeUniformComponents    = 1024;
+        caps.maxComputeAtomicCounterBuffers = 1;
+        caps.maxComputeAtomicCounters       = 8;
+        caps.maxComputeImageUniforms        = 4;
+        caps.maxCombinedComputeUniformComponents =
+            caps.maxComputeUniformBlocks * static_cast<GLuint>(caps.maxUniformBlockSize / 4) +
+            caps.maxComputeUniformComponents;
+        caps.maxComputeShaderStorageBlocks = 4;
+
+        // Table 20.46
+        caps.maxUniformBufferBindings = 36;
+        caps.maxCombinedFragmentUniformComponents =
+            caps.maxFragmentUniformBlocks * (caps.maxUniformBlockSize / 4) +
+            caps.maxFragmentUniformComponents;
+        caps.maxCombinedTextureImageUnits     = 48;
+        caps.maxCombinedShaderOutputResources = 4;
+
+        // Table 20.47
+        caps.maxUniformLocations                = 1024;
+        caps.maxAtomicCounterBufferBindings     = 1;
+        caps.maxAtomicCounterBufferSize         = 32;
+        caps.maxCombinedAtomicCounterBuffers    = 1;
+        caps.maxCombinedAtomicCounters          = 8;
+        caps.maxImageUnits                      = 4;
+        caps.maxCombinedImageUniforms           = 4;
+        caps.maxShaderStorageBufferBindings     = 4;
+        caps.maxShaderStorageBlockSize          = 1 << 27;
+        caps.maxCombinedShaderStorageBlocks     = 4;
+        caps.shaderStorageBufferOffsetAlignment = 256;
+    }
+
+    return caps;
+}
 }
 
 namespace egl
 {
 
 Caps::Caps()
     : textureNPOT(false)
 {
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Caps.h
+++ b/gfx/angle/src/libANGLE/Caps.h
@@ -4,26 +4,29 @@
 // found in the LICENSE file.
 //
 
 #ifndef LIBANGLE_CAPS_H_
 #define LIBANGLE_CAPS_H_
 
 #include "angle_gl.h"
 #include "libANGLE/angletypes.h"
+#include "libANGLE/Version.h"
 
 #include <map>
 #include <set>
 #include <string>
 #include <vector>
 #include <array>
 
 namespace gl
 {
 
+struct Extensions;
+
 typedef std::set<GLuint> SupportedSampleSet;
 
 struct TextureCaps
 {
     TextureCaps();
 
     // Supports for basic texturing: glTexImage, glTexSubImage, etc
     bool texturable;
@@ -40,16 +43,20 @@ struct TextureCaps
     // Get the maximum number of samples supported
     GLuint getMaxSamples() const;
 
     // Get the number of supported samples that is at least as many as requested.  Returns 0 if
     // there are no sample counts available
     GLuint getNearestSamples(GLuint requestedSamples) const;
 };
 
+TextureCaps GenerateMinimumTextureCaps(GLenum internalFormat,
+                                       const Version &clientVersion,
+                                       const Extensions &extensions);
+
 class TextureCapsMap
 {
   public:
     typedef std::map<GLenum, TextureCaps>::const_iterator const_iterator;
 
     void insert(GLenum internalFormat, const TextureCaps &caps);
     void remove(GLenum internalFormat);
     void clear();
@@ -61,16 +68,19 @@ class TextureCapsMap
 
     size_t size() const;
 
   private:
     typedef std::map<GLenum, TextureCaps> InternalFormatToCapsMap;
     InternalFormatToCapsMap mCapsMap;
 };
 
+TextureCapsMap GenerateMinimumTextureCapsMap(const Version &clientVersion,
+                                             const Extensions &extensions);
+
 struct Extensions
 {
     Extensions();
 
     // Generate a vector of supported extension strings
     std::vector<std::string> getStrings() const;
 
     // Set all texture related extension support based on the supported textures.
@@ -294,16 +304,19 @@ struct Extensions
     bool copyTexture;
 
     // GL_CHROMIUM_copy_compressed_texture
     bool copyCompressedTexture;
 
     // GL_ANGLE_webgl_compatibility
     bool webglCompatibility;
 
+    // GL_ANGLE_request_extension
+    bool requestExtension;
+
     // GL_CHROMIUM_bind_generates_resource
     bool bindGeneratesResource;
 
     // GL_ANGLE_robust_client_memory
     bool robustClientMemory;
 
     // GL_EXT_texture_sRGB_decode
     bool textureSRGBDecode;
@@ -328,18 +341,18 @@ struct Extensions
     bool textureNorm16;
 
     // GL_CHROMIUM_path_rendering
     bool pathRendering;
 };
 
 struct ExtensionInfo
 {
-    // If this extension can be enabled with glEnableExtension (GL_ANGLE_webgl_compatibility)
-    bool Enableable = false;
+    // If this extension can be enabled with glRequestExtension (GL_ANGLE_request_extension)
+    bool Requestable = false;
 
     // Pointer to a boolean member of the Extensions struct
     typedef bool(Extensions::*ExtensionBool);
     ExtensionBool ExtensionsMember = nullptr;
 };
 
 using ExtensionInfoMap = std::map<std::string, ExtensionInfo>;
 const ExtensionInfoMap &GetExtensionInfoMap();
@@ -369,21 +382,22 @@ struct Limitations
 };
 
 struct TypePrecision
 {
     TypePrecision();
 
     void setIEEEFloat();
     void setTwosComplementInt(unsigned int bits);
+    void setSimulatedFloat(unsigned int range, unsigned int precision);
     void setSimulatedInt(unsigned int range);
 
     void get(GLint *returnRange, GLint *returnPrecision) const;
 
-    GLint range[2];
+    std::array<GLint, 2> range;
     GLint precision;
 };
 
 struct Caps
 {
     Caps();
 
     // ES 3.1 (April 29, 2015) 20.39: implementation dependent values
@@ -505,16 +519,17 @@ struct Caps
     GLuint maxTransformFeedbackInterleavedComponents;
     GLuint maxTransformFeedbackSeparateAttributes;
     GLuint maxTransformFeedbackSeparateComponents;
 
     // ES 3.1 (April 29, 2015) Table 20.49: Framebuffer Dependent Values
     GLuint maxSamples;
 };
 
+Caps GenerateMinimumCaps(const Version &clientVersion);
 }
 
 namespace egl
 {
 
 struct Caps
 {
     Caps();
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Context.cpp
+++ b/gfx/angle/src/libANGLE/Context.cpp
@@ -12,16 +12,17 @@
 #include <iterator>
 #include <sstream>
 #include <string.h>
 #include <vector>
 
 #include "common/matrix_utils.h"
 #include "common/platform.h"
 #include "common/utilities.h"
+#include "common/version.h"
 #include "libANGLE/Buffer.h"
 #include "libANGLE/Compiler.h"
 #include "libANGLE/Display.h"
 #include "libANGLE/Fence.h"
 #include "libANGLE/Framebuffer.h"
 #include "libANGLE/FramebufferAttachment.h"
 #include "libANGLE/Path.h"
 #include "libANGLE/Program.h"
@@ -301,34 +302,41 @@ Context::Context(rx::EGLImplFactory *imp
     {
         // TODO: These could also be enabled via extension
         Texture *zeroTexture3D = new Texture(mImplementation.get(), 0, GL_TEXTURE_3D);
         mZeroTextures[GL_TEXTURE_3D].set(zeroTexture3D);
 
         Texture *zeroTexture2DArray = new Texture(mImplementation.get(), 0, GL_TEXTURE_2D_ARRAY);
         mZeroTextures[GL_TEXTURE_2D_ARRAY].set(zeroTexture2DArray);
     }
+    if (getClientVersion() >= Version(3, 1))
+    {
+        Texture *zeroTexture2DMultisample =
+            new Texture(mImplementation.get(), 0, GL_TEXTURE_2D_MULTISAMPLE);
+        mZeroTextures[GL_TEXTURE_2D_MULTISAMPLE].set(zeroTexture2DMultisample);
+    }
 
     if (mExtensions.eglImageExternal || mExtensions.eglStreamConsumerExternal)
     {
         Texture *zeroTextureExternal =
             new Texture(mImplementation.get(), 0, GL_TEXTURE_EXTERNAL_OES);
         mZeroTextures[GL_TEXTURE_EXTERNAL_OES].set(zeroTextureExternal);
     }
 
     mGLState.initializeZeroTextures(mZeroTextures);
 
     bindVertexArray(0);
     bindArrayBuffer(0);
+    bindDrawIndirectBuffer(0);
     bindElementArrayBuffer(0);
 
     bindRenderbuffer(GL_RENDERBUFFER, 0);
 
     bindGenericUniformBuffer(0);
-    for (unsigned int i = 0; i < mCaps.maxCombinedUniformBlocks; i++)
+    for (unsigned int i = 0; i < mCaps.maxUniformBufferBindings; i++)
     {
         bindIndexedUniformBuffer(0, i, 0, -1);
     }
 
     bindCopyReadBuffer(0);
     bindCopyWriteBuffer(0);
     bindPixelPackBuffer(0);
     bindPixelUnpackBuffer(0);
@@ -446,16 +454,17 @@ Context::~Context()
 
 void Context::makeCurrent(egl::Surface *surface)
 {
     ASSERT(surface != nullptr);
 
     if (!mHasBeenCurrent)
     {
         initRendererString();
+        initVersionStrings();
         initExtensionStrings();
 
         mGLState.setViewportParams(0, 0, surface->getWidth(), surface->getHeight());
         mGLState.setScissorParams(0, 0, surface->getWidth(), surface->getHeight());
 
         mHasBeenCurrent = true;
     }
 
@@ -946,16 +955,22 @@ bool Context::isSampler(GLuint samplerNa
 }
 
 void Context::bindArrayBuffer(GLuint bufferHandle)
 {
     Buffer *buffer = mResourceManager->checkBufferAllocation(mImplementation.get(), bufferHandle);
     mGLState.setArrayBufferBinding(buffer);
 }
 
+void Context::bindDrawIndirectBuffer(GLuint bufferHandle)
+{
+    Buffer *buffer = mResourceManager->checkBufferAllocation(mImplementation.get(), bufferHandle);
+    mGLState.setDrawIndirectBufferBinding(buffer);
+}
+
 void Context::bindElementArrayBuffer(GLuint bufferHandle)
 {
     Buffer *buffer = mResourceManager->checkBufferAllocation(mImplementation.get(), bufferHandle);
     mGLState.getVertexArray()->setElementArrayBuffer(buffer);
 }
 
 void Context::bindTexture(GLenum target, GLuint handle)
 {
@@ -2246,49 +2261,133 @@ void Context::initRendererString()
     std::ostringstream rendererString;
     rendererString << "ANGLE (";
     rendererString << mImplementation->getRendererDescription();
     rendererString << ")";
 
     mRendererString = MakeStaticString(rendererString.str());
 }
 
-const char *Context::getRendererString() const
-{
-    return mRendererString;
+void Context::initVersionStrings()
+{
+    const Version &clientVersion = getClientVersion();
+
+    std::ostringstream versionString;
+    versionString << "OpenGL ES " << clientVersion.major << "." << clientVersion.minor << " (ANGLE "
+                  << ANGLE_VERSION_STRING << ")";
+    mVersionString = MakeStaticString(versionString.str());
+
+    std::ostringstream shadingLanguageVersionString;
+    shadingLanguageVersionString << "OpenGL ES GLSL ES "
+                                 << (clientVersion.major == 2 ? 1 : clientVersion.major) << "."
+                                 << clientVersion.minor << "0 (ANGLE " << ANGLE_VERSION_STRING
+                                 << ")";
+    mShadingLanguageString = MakeStaticString(shadingLanguageVersionString.str());
 }
 
 void Context::initExtensionStrings()
 {
+    auto mergeExtensionStrings = [](const std::vector<const char *> &strings) {
+        std::ostringstream combinedStringStream;
+        std::copy(strings.begin(), strings.end(),
+                  std::ostream_iterator<const char *>(combinedStringStream, " "));
+        return MakeStaticString(combinedStringStream.str());
+    };
+
+    mExtensionStrings.clear();
     for (const auto &extensionString : mExtensions.getStrings())
     {
         mExtensionStrings.push_back(MakeStaticString(extensionString));
     }
-
-    std::ostringstream combinedStringStream;
-    std::copy(mExtensionStrings.begin(), mExtensionStrings.end(),
-              std::ostream_iterator<const char *>(combinedStringStream, " "));
-    mExtensionString = MakeStaticString(combinedStringStream.str());
-}
-
-const char *Context::getExtensionString() const
-{
-    return mExtensionString;
-}
-
-const char *Context::getExtensionString(size_t idx) const
-{
-    return mExtensionStrings[idx];
+    mExtensionString = mergeExtensionStrings(mExtensionStrings);
+
+    mRequestableExtensionStrings.clear();
+    for (const auto &extensionInfo : GetExtensionInfoMap())
+    {
+        if (extensionInfo.second.Requestable &&
+            !(mExtensions.*(extensionInfo.second.ExtensionsMember)))
+        {
+            mRequestableExtensionStrings.push_back(MakeStaticString(extensionInfo.first));
+        }
+    }
+    mRequestableExtensionString = mergeExtensionStrings(mRequestableExtensionStrings);
+}
+
+const GLubyte *Context::getString(GLenum name) const
+{
+    switch (name)
+    {
+        case GL_VENDOR:
+            return reinterpret_cast<const GLubyte *>("Google Inc.");
+
+        case GL_RENDERER:
+            return reinterpret_cast<const GLubyte *>(mRendererString);
+
+        case GL_VERSION:
+            return reinterpret_cast<const GLubyte *>(mVersionString);
+
+        case GL_SHADING_LANGUAGE_VERSION:
+            return reinterpret_cast<const GLubyte *>(mShadingLanguageString);
+
+        case GL_EXTENSIONS:
+            return reinterpret_cast<const GLubyte *>(mExtensionString);
+
+        case GL_REQUESTABLE_EXTENSIONS_ANGLE:
+            return reinterpret_cast<const GLubyte *>(mRequestableExtensionString);
+
+        default:
+            UNREACHABLE();
+            return nullptr;
+    }
+}
+
+const GLubyte *Context::getStringi(GLenum name, GLuint index) const
+{
+    switch (name)
+    {
+        case GL_EXTENSIONS:
+            return reinterpret_cast<const GLubyte *>(mExtensionStrings[index]);
+
+        case GL_REQUESTABLE_EXTENSIONS_ANGLE:
+            return reinterpret_cast<const GLubyte *>(mRequestableExtensionStrings[index]);
+
+        default:
+            UNREACHABLE();
+            return nullptr;
+    }
 }
 
 size_t Context::getExtensionStringCount() const
 {
     return mExtensionStrings.size();
 }
 
+void Context::requestExtension(const char *name)
+{
+    const ExtensionInfoMap &extensionInfos = GetExtensionInfoMap();
+    ASSERT(extensionInfos.find(name) != extensionInfos.end());
+    const auto &extension = extensionInfos.at(name);
+    ASSERT(extension.Requestable);
+
+    if (mExtensions.*(extension.ExtensionsMember))
+    {
+        // Extension already enabled
+        return;
+    }
+
+    mExtensions.*(extension.ExtensionsMember) = true;
+    updateCaps();
+    initExtensionStrings();
+}
+
+size_t Context::getRequestableExtensionStringCount() const
+{
+    return mRequestableExtensionStrings.size();
+}
+
 void Context::beginTransformFeedback(GLenum primitiveMode)
 {
     TransformFeedback *transformFeedback = mGLState.getCurrentTransformFeedback();
     ASSERT(transformFeedback != nullptr);
     ASSERT(!transformFeedback->isPaused());
 
     transformFeedback->begin(primitiveMode, mGLState.getProgram());
 }
@@ -2326,16 +2425,17 @@ void Context::initCaps(bool webGLContext
         // FIXME(geofflang): Don't support EXT_sRGB in non-ES2 contexts
         //mExtensions.sRGB = false;
     }
 
     // Some extensions are always available because they are implemented in the GL layer.
     mExtensions.bindUniformLocation = true;
     mExtensions.vertexArrayObject   = true;
     mExtensions.bindGeneratesResource = true;
+    mExtensions.requestExtension      = true;
 
     // Enable the no error extension if the context was created with the flag.
     mExtensions.noError = mSkipValidation;
 
     // Explicitly enable GL_KHR_debug
     mExtensions.debug                   = true;
     mExtensions.maxDebugMessageLength   = 1024;
     mExtensions.maxDebugLoggedMessages  = 1024;
@@ -2352,17 +2452,17 @@ void Context::initCaps(bool webGLContext
 
     mCaps.maxFragmentInputComponents = std::min<GLuint>(mCaps.maxFragmentInputComponents, IMPLEMENTATION_MAX_VARYING_VECTORS * 4);
 
     // WebGL compatibility
     mExtensions.webglCompatibility = webGLContext;
     for (const auto &extensionInfo : GetExtensionInfoMap())
     {
         // If this context is for WebGL, disable all enableable extensions
-        if (webGLContext && extensionInfo.second.Enableable)
+        if (webGLContext && extensionInfo.second.Requestable)
         {
             mExtensions.*(extensionInfo.second.ExtensionsMember) = false;
         }
     }
 
     // Generate texture caps
     updateCaps();
 }
@@ -2926,42 +3026,16 @@ void Context::compressedTexSubImage3D(GL
 }
 
 void Context::generateMipmap(GLenum target)
 {
     Texture *texture = getTargetTexture(target);
     handleError(texture->generateMipmap());
 }
 
-GLboolean Context::enableExtension(const char *name)
-{
-    const ExtensionInfoMap &extensionInfos = GetExtensionInfoMap();
-    ASSERT(extensionInfos.find(name) != extensionInfos.end());
-    const auto &extension = extensionInfos.at(name);
-    ASSERT(extension.Enableable);
-
-    if (mExtensions.*(extension.ExtensionsMember))
-    {
-        // Extension already enabled
-        return GL_TRUE;
-    }
-
-    const auto &nativeExtensions = mImplementation->getNativeExtensions();
-    if (!(nativeExtensions.*(extension.ExtensionsMember)))
-    {
-        // Underlying implementation does not support this valid extension
-        return GL_FALSE;
-    }
-
-    mExtensions.*(extension.ExtensionsMember) = true;
-    updateCaps();
-    initExtensionStrings();
-    return GL_TRUE;
-}
-
 void Context::copyTextureCHROMIUM(GLuint sourceId,
                                   GLuint destId,
                                   GLint internalFormat,
                                   GLenum destType,
                                   GLboolean unpackFlipY,
                                   GLboolean unpackPremultiplyAlpha,
                                   GLboolean unpackUnmultiplyAlpha)
 {
@@ -3557,16 +3631,40 @@ void Context::bindBuffer(GLenum target, 
             bindPixelUnpackBuffer(buffer);
             break;
         case GL_UNIFORM_BUFFER:
             bindGenericUniformBuffer(buffer);
             break;
         case GL_TRANSFORM_FEEDBACK_BUFFER:
             bindGenericTransformFeedbackBuffer(buffer);
             break;
+        case GL_ATOMIC_COUNTER_BUFFER:
+            if (buffer != 0)
+            {
+                // Binding buffers to this binding point is not implemented yet.
+                UNIMPLEMENTED();
+            }
+            break;
+        case GL_SHADER_STORAGE_BUFFER:
+            if (buffer != 0)
+            {
+                // Binding buffers to this binding point is not implemented yet.
+                UNIMPLEMENTED();
+            }
+            break;
+        case GL_DRAW_INDIRECT_BUFFER:
+            bindDrawIndirectBuffer(buffer);
+            break;
+        case GL_DISPATCH_INDIRECT_BUFFER:
+            if (buffer != 0)
+            {
+                // Binding buffers to this binding point is not implemented yet.
+                UNIMPLEMENTED();
+            }
+            break;
 
         default:
             UNREACHABLE();
             break;
     }
 }
 
 void Context::bindFramebuffer(GLenum target, GLuint framebuffer)
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Context.h
+++ b/gfx/angle/src/libANGLE/Context.h
@@ -138,16 +138,17 @@ class Context final : public ValidationC
                                             GLintptr offset,
                                             GLsizeiptr size);
     void bindCopyReadBuffer(GLuint bufferHandle);
     void bindCopyWriteBuffer(GLuint bufferHandle);
     void bindPixelPackBuffer(GLuint bufferHandle);
     void bindPixelUnpackBuffer(GLuint bufferHandle);
     void useProgram(GLuint program);
     void bindTransformFeedback(GLuint transformFeedbackHandle);
+    void bindDrawIndirectBuffer(GLuint bufferHandle);
 
     Error beginQuery(GLenum target, GLuint query);
     Error endQuery(GLenum target);
     Error queryCounter(GLuint id, GLenum target);
     void getQueryiv(GLenum target, GLenum pname, GLint *params);
     void getQueryObjectiv(GLuint id, GLenum pname, GLint *params);
     void getQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
     void getQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params);
@@ -480,18 +481,16 @@ class Context final : public ValidationC
                                 GLsizei height,
                                 GLboolean unpackFlipY,
                                 GLboolean unpackPremultiplyAlpha,
                                 GLboolean unpackUnmultiplyAlpha);
     void compressedCopyTextureCHROMIUM(GLuint sourceId, GLuint destId);
 
     void generateMipmap(GLenum target);
 
-    GLboolean enableExtension(const char *name);
-
     Error flush();
     Error finish();
 
     void getBufferPointerv(GLenum target, GLenum pname, void **params);
     GLvoid *mapBuffer(GLenum target, GLenum access);
     GLboolean unmapBuffer(GLenum target);
     GLvoid *mapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
     void flushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
@@ -594,22 +593,24 @@ class Context final : public ValidationC
     bool isContextLost();
     GLenum getResetStatus();
     bool isResetNotificationEnabled();
 
     const egl::Config *getConfig() const;
     EGLenum getClientType() const;
     EGLenum getRenderBuffer() const;
 
-    const char *getRendererString() const;
+    const GLubyte *getString(GLenum name) const;
+    const GLubyte *getStringi(GLenum name, GLuint index) const;
 
-    const char *getExtensionString() const;
-    const char *getExtensionString(size_t idx) const;
     size_t getExtensionStringCount() const;
 
+    void requestExtension(const char *name);
+    size_t getRequestableExtensionStringCount() const;
+
     rx::ContextImpl *getImplementation() const { return mImplementation.get(); }
     const Workarounds &getWorkarounds() const;
 
   private:
     void syncRendererState();
     void syncRendererState(const State::DirtyBits &bitMask, const State::DirtyObjects &objectMask);
     void syncStateForReadPixels();
     void syncStateForTexImage();
@@ -623,16 +624,17 @@ class Context final : public ValidationC
     void detachTexture(GLuint texture);
     void detachFramebuffer(GLuint framebuffer);
     void detachRenderbuffer(GLuint renderbuffer);
     void detachVertexArray(GLuint vertexArray);
     void detachTransformFeedback(GLuint transformFeedback);
     void detachSampler(GLuint sampler);
 
     void initRendererString();
+    void initVersionStrings();
     void initExtensionStrings();
 
     void initCaps(bool webGLContext);
     void updateCaps();
     void initWorkarounds();
 
     LabeledObject *getLabeledObject(GLenum identifier, GLuint name) const;
     LabeledObject *getLabeledObjectFromPtr(const void *ptr) const;
@@ -665,19 +667,23 @@ class Context final : public ValidationC
     HandleAllocator mQueryHandleAllocator;
 
     ResourceMap<VertexArray> mVertexArrayMap;
     HandleAllocator mVertexArrayHandleAllocator;
 
     ResourceMap<TransformFeedback> mTransformFeedbackMap;
     HandleAllocator mTransformFeedbackAllocator;
 
+    const char *mVersionString;
+    const char *mShadingLanguageString;
     const char *mRendererString;
     const char *mExtensionString;
     std::vector<const char *> mExtensionStrings;
+    const char *mRequestableExtensionString;
+    std::vector<const char *> mRequestableExtensionStrings;
 
     // Recorded errors
     typedef std::set<GLenum> ErrorSet;
     ErrorSet mErrors;
 
     // Current/lost context flags
     bool mHasBeenCurrent;
     bool mContextLost;
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/ContextState.cpp
+++ b/gfx/angle/src/libANGLE/ContextState.cpp
@@ -471,23 +471,35 @@ bool ValidationContext::getQueryParamete
         case GL_MAX_TEXTURE_LOD_BIAS:
         {
             *type      = GL_FLOAT;
             *numParams = 1;
             return true;
         }
     }
 
+    if (getExtensions().requestExtension)
+    {
+        switch (pname)
+        {
+            case GL_NUM_REQUESTABLE_EXTENSIONS_ANGLE:
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+        }
+    }
+
     if (getClientVersion() < Version(3, 1))
     {
         return false;
     }
 
     switch (pname)
     {
+        case GL_DRAW_INDIRECT_BUFFER_BINDING:
         case GL_MAX_FRAMEBUFFER_WIDTH:
         case GL_MAX_FRAMEBUFFER_HEIGHT:
         case GL_MAX_FRAMEBUFFER_SAMPLES:
         case GL_MAX_SAMPLE_MASK_WORDS:
         case GL_MAX_COLOR_TEXTURE_SAMPLES:
         case GL_MAX_DEPTH_TEXTURE_SAMPLES:
         case GL_MAX_INTEGER_SAMPLES:
         case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET:
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Error.cpp
+++ b/gfx/angle/src/libANGLE/Error.cpp
@@ -11,16 +11,21 @@
 
 #include "common/angleutils.h"
 
 #include <cstdarg>
 
 namespace gl
 {
 
+Error::Error(GLenum errorCode, std::string &&message)
+    : mCode(errorCode), mID(errorCode), mMessage(new std::string(std::move(message)))
+{
+}
+
 Error::Error(GLenum errorCode, const char *msg, ...) : mCode(errorCode), mID(errorCode)
 {
     va_list vararg;
     va_start(vararg, msg);
     createMessageString();
     *mMessage = FormatString(msg, vararg);
     va_end(vararg);
 }
@@ -59,18 +64,37 @@ bool Error::operator==(const Error &othe
 
     return (*mMessage == *other.mMessage);
 }
 
 bool Error::operator!=(const Error &other) const
 {
     return !(*this == other);
 }
+
+namespace priv
+{
+template <GLenum EnumT>
+ErrorStream<EnumT>::ErrorStream()
+{
 }
 
+template <GLenum EnumT>
+ErrorStream<EnumT>::operator gl::Error()
+{
+    return Error(EnumT, mErrorStream.str().c_str());
+}
+
+template class ErrorStream<GL_OUT_OF_MEMORY>;
+template class ErrorStream<GL_INVALID_OPERATION>;
+
+}  // namespace priv
+
+}  // namespace gl
+
 namespace egl
 {
 
 Error::Error(EGLint errorCode, const char *msg, ...) : mCode(errorCode), mID(0)
 {
     va_list vararg;
     va_start(vararg, msg);
     createMessageString();
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Error.h
+++ b/gfx/angle/src/libANGLE/Error.h
@@ -5,28 +5,33 @@
 
 // Error.h: Defines the egl::Error and gl::Error classes which encapsulate API errors
 // and optional error messages.
 
 #ifndef LIBANGLE_ERROR_H_
 #define LIBANGLE_ERROR_H_
 
 #include "angle_gl.h"
+#include "common/angleutils.h"
 #include <EGL/egl.h>
 
 #include <string>
 #include <memory>
 
 namespace gl
 {
 
+template <typename T>
+class ErrorOrResult;
+
 class Error final
 {
   public:
     explicit inline Error(GLenum errorCode);
+    Error(GLenum errorCode, std::string &&msg);
     Error(GLenum errorCode, const char *msg, ...);
     Error(GLenum errorCode, GLuint id, const char *msg, ...);
     inline Error(const Error &other);
     inline Error(Error &&other);
 
     inline Error &operator=(const Error &other);
     inline Error &operator=(Error &&other);
 
@@ -43,16 +48,73 @@ class Error final
   private:
     void createMessageString() const;
 
     GLenum mCode;
     GLuint mID;
     mutable std::unique_ptr<std::string> mMessage;
 };
 
+namespace priv
+{
+template <GLenum EnumT>
+class ErrorStream : angle::NonCopyable
+{
+  public:
+    ErrorStream();
+
+    template <typename T>
+    ErrorStream &operator<<(T value);
+
+    operator Error();
+
+    template <typename T>
+    operator ErrorOrResult<T>()
+    {
+        return static_cast<Error>(*this);
+    }
+
+  private:
+    std::ostringstream mErrorStream;
+};
+
+// These convience methods for HRESULTS (really long) are used all over the place in the D3D
+// back-ends.
+#if defined(ANGLE_PLATFORM_WINDOWS)
+template <>
+template <>
+inline ErrorStream<GL_OUT_OF_MEMORY> &ErrorStream<GL_OUT_OF_MEMORY>::operator<<(HRESULT hresult)
+{
+    mErrorStream << "HRESULT: 0x" << std::ios::hex << hresult;
+    return *this;
+}
+
+template <>
+template <>
+inline ErrorStream<GL_INVALID_OPERATION> &ErrorStream<GL_INVALID_OPERATION>::operator<<(
+    HRESULT hresult)
+{
+    mErrorStream << "HRESULT: 0x" << std::ios::hex << hresult;
+    return *this;
+}
+#endif  // defined(ANGLE_PLATFORM_WINDOWS)
+
+template <GLenum EnumT>
+template <typename T>
+ErrorStream<EnumT> &ErrorStream<EnumT>::operator<<(T value)
+{
+    mErrorStream << value;
+    return *this;
+}
+
+}  // namespace priv
+
+using OutOfMemory   = priv::ErrorStream<GL_OUT_OF_MEMORY>;
+using InternalError = priv::ErrorStream<GL_INVALID_OPERATION>;
+
 template <typename T>
 class ErrorOrResult
 {
   public:
     ErrorOrResult(const gl::Error &error) : mError(error) {}
     ErrorOrResult(gl::Error &&error) : mError(std::move(error)) {}
 
     ErrorOrResult(T &&result)
@@ -105,16 +167,21 @@ class Error final
   private:
     void createMessageString() const;
 
     EGLint mCode;
     EGLint mID;
     mutable std::unique_ptr<std::string> mMessage;
 };
 
+inline Error NoError()
+{
+    return Error(EGL_SUCCESS);
+}
+
 }  // namespace egl
 
 #define ANGLE_CONCAT1(x, y) x##y
 #define ANGLE_CONCAT2(x, y) ANGLE_CONCAT1(x, y)
 #define ANGLE_LOCAL_VAR ANGLE_CONCAT2(_localVar, __LINE__)
 
 #define ANGLE_TRY(EXPR)                \
     {                                  \
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Framebuffer.cpp
+++ b/gfx/angle/src/libANGLE/Framebuffer.cpp
@@ -91,16 +91,20 @@ const FramebufferAttachment *Framebuffer
         default:
             UNREACHABLE();
             return nullptr;
     }
 }
 
 const FramebufferAttachment *FramebufferState::getReadAttachment() const
 {
+    if (mReadBufferState == GL_NONE)
+    {
+        return nullptr;
+    }
     ASSERT(mReadBufferState == GL_BACK || (mReadBufferState >= GL_COLOR_ATTACHMENT0 && mReadBufferState <= GL_COLOR_ATTACHMENT15));
     size_t readIndex = (mReadBufferState == GL_BACK ? 0 : static_cast<size_t>(mReadBufferState - GL_COLOR_ATTACHMENT0));
     ASSERT(readIndex < mColorAttachments.size());
     return mColorAttachments[readIndex].isAttached() ? &mColorAttachments[readIndex] : nullptr;
 }
 
 const FramebufferAttachment *FramebufferState::getFirstColorAttachment() const
 {
@@ -146,18 +150,17 @@ const FramebufferAttachment *Framebuffer
     return mStencilAttachment.isAttached() ? &mStencilAttachment : nullptr;
 }
 
 const FramebufferAttachment *FramebufferState::getDepthStencilAttachment() const
 {
     // A valid depth-stencil attachment has the same resource bound to both the
     // depth and stencil attachment points.
     if (mDepthAttachment.isAttached() && mStencilAttachment.isAttached() &&
-        mDepthAttachment.type() == mStencilAttachment.type() &&
-        mDepthAttachment.id() == mStencilAttachment.id())
+        mDepthAttachment == mStencilAttachment)
     {
         return &mDepthAttachment;
     }
 
     return nullptr;
 }
 
 bool FramebufferState::attachmentsHaveSameDimensions() const
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Program.cpp
+++ b/gfx/angle/src/libANGLE/Program.cpp
@@ -619,17 +619,17 @@ Error Program::link(const ContextState &
 
         if (mState.mAttachedFragmentShader->getShaderVersion() !=
             mState.mAttachedVertexShader->getShaderVersion())
         {
             mInfoLog << "Fragment shader version does not match vertex shader version.";
             return NoError();
         }
 
-        if (!linkAttributes(data, mInfoLog, mAttributeBindings, mState.mAttachedVertexShader))
+        if (!linkAttributes(data, mInfoLog))
         {
             return NoError();
         }
 
         if (!linkVaryings(mInfoLog, mState.mAttachedVertexShader, mState.mAttachedFragmentShader))
         {
             return NoError();
         }
@@ -1998,22 +1998,21 @@ bool Program::linkValidateInterfaceBlock
     {
         infoLog << "Matrix packings for " << uniformName << " differ between vertex and fragment shaders";
         return false;
     }
 
     return true;
 }
 
-// Determines the mapping between GL attributes and Direct3D 9 vertex stream usage indices
-bool Program::linkAttributes(const ContextState &data,
-                             InfoLog &infoLog,
-                             const Bindings &attributeBindings,
-                             const Shader *vertexShader)
+// Assigns locations to all attributes from the bindings and program locations.
+bool Program::linkAttributes(const ContextState &data, InfoLog &infoLog)
 {
+    const auto *vertexShader = mState.getAttachedVertexShader();
+
     unsigned int usedLocations = 0;
     mState.mAttributes         = vertexShader->getActiveAttributes();
     GLuint maxAttribs          = data.getCaps().maxVertexAttributes;
 
     // TODO(jmadill): handle aliasing robustly
     if (mState.mAttributes.size() > maxAttribs)
     {
         infoLog << "Too many vertex attributes.";
@@ -2023,17 +2022,17 @@ bool Program::linkAttributes(const Conte
     std::vector<sh::Attribute *> usedAttribMap(maxAttribs, nullptr);
 
     // Link attributes that have a binding location
     for (sh::Attribute &attribute : mState.mAttributes)
     {
         // TODO(jmadill): do staticUse filtering step here, or not at all
         ASSERT(attribute.staticUse);
 
-        int bindingLocation = attributeBindings.getBinding(attribute.name);
+        int bindingLocation = mAttributeBindings.getBinding(attribute.name);
         if (attribute.location == -1 && bindingLocation != -1)
         {
             attribute.location = bindingLocation;
         }
 
         if (attribute.location != -1)
         {
             // Location is set by glBindAttribLocation or by location layout qualifier
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Program.h
+++ b/gfx/angle/src/libANGLE/Program.h
@@ -6,18 +6,19 @@
 
 // Program.h: Defines the gl::Program class. Implements GL program objects
 // and related functionality. [OpenGL ES 2.0.24] section 2.10.3 page 28.
 
 #ifndef LIBANGLE_PROGRAM_H_
 #define LIBANGLE_PROGRAM_H_
 
 #include <GLES2/gl2.h>
-#include <GLSLANG/ShaderLang.h>
+#include <GLSLANG/ShaderVars.h>
 
+#include <map>
 #include <set>
 #include <sstream>
 #include <string>
 #include <vector>
 
 #include "common/angleutils.h"
 #include "common/mathutil.h"
 #include "common/Optional.h"
@@ -374,20 +375,17 @@ class Program final : angle::NonCopyable
 
       private:
         std::unordered_map<std::string, GLuint> mBindings;
     };
 
     void unlink(bool destroy = false);
     void resetUniformBlockBindings();
 
-    bool linkAttributes(const ContextState &data,
-                        InfoLog &infoLog,
-                        const Bindings &attributeBindings,
-                        const Shader *vertexShader);
+    bool linkAttributes(const ContextState &data, InfoLog &infoLog);
     bool validateUniformBlocksCount(GLuint maxUniformBlocks,
                                     const std::vector<sh::InterfaceBlock> &block,
                                     const std::string &errorMessage,
                                     InfoLog &infoLog) const;
     bool validateVertexAndFragmentInterfaceBlocks(
         const std::vector<sh::InterfaceBlock> &vertexInterfaceBlocks,
         const std::vector<sh::InterfaceBlock> &fragmentInterfaceBlocks,
         InfoLog &infoLog) const;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/State.cpp
+++ b/gfx/angle/src/libANGLE/State.cpp
@@ -155,26 +155,30 @@ void State::initialize(const Caps &caps,
     mBlend.colorMaskGreen = true;
     mBlend.colorMaskBlue = true;
     mBlend.colorMaskAlpha = true;
 
     mActiveSampler = 0;
 
     mVertexAttribCurrentValues.resize(caps.maxVertexAttributes);
 
-    mUniformBuffers.resize(caps.maxCombinedUniformBlocks);
+    mUniformBuffers.resize(caps.maxUniformBufferBindings);
 
     mSamplerTextures[GL_TEXTURE_2D].resize(caps.maxCombinedTextureImageUnits);
     mSamplerTextures[GL_TEXTURE_CUBE_MAP].resize(caps.maxCombinedTextureImageUnits);
     if (clientVersion >= Version(3, 0))
     {
         // TODO: These could also be enabled via extension
         mSamplerTextures[GL_TEXTURE_2D_ARRAY].resize(caps.maxCombinedTextureImageUnits);
         mSamplerTextures[GL_TEXTURE_3D].resize(caps.maxCombinedTextureImageUnits);
     }
+    if (clientVersion >= Version(3, 1))
+    {
+        mSamplerTextures[GL_TEXTURE_2D_MULTISAMPLE].resize(caps.maxCombinedTextureImageUnits);
+    }
     if (extensions.eglImageExternal || extensions.eglStreamConsumerExternal)
     {
         mSamplerTextures[GL_TEXTURE_EXTERNAL_OES].resize(caps.maxCombinedTextureImageUnits);
     }
 
     mSamplers.resize(caps.maxCombinedTextureImageUnits);
 
     mActiveQueries[GL_ANY_SAMPLES_PASSED].set(nullptr);
@@ -219,16 +223,17 @@ void State::reset()
         }
     }
     for (size_t samplerIdx = 0; samplerIdx < mSamplers.size(); samplerIdx++)
     {
         mSamplers[samplerIdx].set(NULL);
     }
 
     mArrayBuffer.set(NULL);
+    mDrawIndirectBuffer.set(NULL);
     mRenderbuffer.set(NULL);
 
     if (mProgram)
     {
         mProgram->release();
     }
     mProgram = NULL;
 
@@ -627,16 +632,23 @@ void State::setEnableFeature(GLenum feat
       case GL_SAMPLE_COVERAGE:               setSampleCoverage(enabled);        break;
       case GL_SCISSOR_TEST:                  setScissorTest(enabled);           break;
       case GL_STENCIL_TEST:                  setStencilTest(enabled);           break;
       case GL_DEPTH_TEST:                    setDepthTest(enabled);             break;
       case GL_BLEND:                         setBlend(enabled);                 break;
       case GL_DITHER:                        setDither(enabled);                break;
       case GL_PRIMITIVE_RESTART_FIXED_INDEX: setPrimitiveRestart(enabled);      break;
       case GL_RASTERIZER_DISCARD:            setRasterizerDiscard(enabled);     break;
+      case GL_SAMPLE_MASK:
+          if (enabled)
+          {
+              // Enabling this feature is not implemented yet.
+              UNIMPLEMENTED();
+          }
+          break;
       case GL_DEBUG_OUTPUT_SYNCHRONOUS:
           mDebug.setOutputSynchronous(enabled);
           break;
       case GL_DEBUG_OUTPUT:
           mDebug.setOutputEnabled(enabled);
           break;
       case GL_FRAMEBUFFER_SRGB_EXT:
           setFramebufferSRGB(enabled);
@@ -657,16 +669,19 @@ bool State::getEnableFeature(GLenum feat
       case GL_SAMPLE_COVERAGE:               return isSampleCoverageEnabled();
       case GL_SCISSOR_TEST:                  return isScissorTestEnabled();
       case GL_STENCIL_TEST:                  return isStencilTestEnabled();
       case GL_DEPTH_TEST:                    return isDepthTestEnabled();
       case GL_BLEND:                         return isBlendEnabled();
       case GL_DITHER:                        return isDitherEnabled();
       case GL_PRIMITIVE_RESTART_FIXED_INDEX: return isPrimitiveRestartEnabled();
       case GL_RASTERIZER_DISCARD:            return isRasterizerDiscardEnabled();
+      case GL_SAMPLE_MASK:
+          UNIMPLEMENTED();
+          return false;
       case GL_DEBUG_OUTPUT_SYNCHRONOUS:
           return mDebug.isOutputSynchronous();
       case GL_DEBUG_OUTPUT:
           return mDebug.isOutputEnabled();
       case GL_BIND_GENERATES_RESOURCE_CHROMIUM:
           return isBindGeneratesResourceEnabled();
       case GL_FRAMEBUFFER_SRGB_EXT:
           return getFramebufferSRGB();
@@ -1106,16 +1121,22 @@ void State::setArrayBufferBinding(Buffer
     mArrayBuffer.set(buffer);
 }
 
 GLuint State::getArrayBufferId() const
 {
     return mArrayBuffer.id();
 }
 
+void State::setDrawIndirectBufferBinding(Buffer *buffer)
+{
+    mDrawIndirectBuffer.set(buffer);
+    mDirtyBits.set(DIRTY_BIT_DRAW_INDIRECT_BUFFER_BINDING);
+}
+
 void State::setGenericUniformBufferBinding(Buffer *buffer)
 {
     mGenericUniformBuffer.set(buffer);
 }
 
 void State::setIndexedUniformBufferBinding(GLuint index, Buffer *buffer, GLintptr offset, GLsizeiptr size)
 {
     mUniformBuffers[index].set(buffer, offset, size);
@@ -1156,25 +1177,33 @@ Buffer *State::getTargetBuffer(GLenum ta
       case GL_ARRAY_BUFFER:              return mArrayBuffer.get();
       case GL_COPY_READ_BUFFER:          return mCopyReadBuffer.get();
       case GL_COPY_WRITE_BUFFER:         return mCopyWriteBuffer.get();
       case GL_ELEMENT_ARRAY_BUFFER:      return getVertexArray()->getElementArrayBuffer().get();
       case GL_PIXEL_PACK_BUFFER:         return mPack.pixelBuffer.get();
       case GL_PIXEL_UNPACK_BUFFER:       return mUnpack.pixelBuffer.get();
       case GL_TRANSFORM_FEEDBACK_BUFFER: return mTransformFeedback->getGenericBuffer().get();
       case GL_UNIFORM_BUFFER:            return mGenericUniformBuffer.get();
+      case GL_ATOMIC_COUNTER_BUFFER:
+          UNIMPLEMENTED();
+          return nullptr;
+      case GL_SHADER_STORAGE_BUFFER:
+          UNIMPLEMENTED();
+          return nullptr;
+      case GL_DRAW_INDIRECT_BUFFER:
+          return mDrawIndirectBuffer.get();
       default: UNREACHABLE();            return NULL;
     }
 }
 
 void State::detachBuffer(GLuint bufferName)
 {
-    BindingPointer<Buffer> *buffers[] = {&mArrayBuffer,        &mCopyReadBuffer,
-                                         &mCopyWriteBuffer,    &mPack.pixelBuffer,
-                                         &mUnpack.pixelBuffer, &mGenericUniformBuffer};
+    BindingPointer<Buffer> *buffers[] = {
+        &mArrayBuffer,      &mCopyReadBuffer,     &mCopyWriteBuffer,     &mDrawIndirectBuffer,
+        &mPack.pixelBuffer, &mUnpack.pixelBuffer, &mGenericUniformBuffer};
     for (auto buffer : buffers)
     {
         if (buffer->id() == bufferName)
         {
             buffer->set(nullptr);
         }
     }
 
@@ -1583,16 +1612,19 @@ void State::getIntegerv(const ContextSta
     // Please note: DEPTH_CLEAR_VALUE is not included in our internal getIntegerv implementation
     // because it is stored as a float, despite the fact that the GL ES 2.0 spec names
     // GetIntegerv as its native query function. As it would require conversion in any
     // case, this should make no difference to the calling application. You may find it in
     // State::getFloatv.
     switch (pname)
     {
       case GL_ARRAY_BUFFER_BINDING:                     *params = mArrayBuffer.id();                              break;
+      case GL_DRAW_INDIRECT_BUFFER_BINDING:
+          *params = mDrawIndirectBuffer.id();
+          break;
       case GL_ELEMENT_ARRAY_BUFFER_BINDING:             *params = getVertexArray()->getElementArrayBuffer().id(); break;
         //case GL_FRAMEBUFFER_BINDING:                    // now equivalent to GL_DRAW_FRAMEBUFFER_BINDING_ANGLE
       case GL_DRAW_FRAMEBUFFER_BINDING_ANGLE:           *params = mDrawFramebuffer->id();                         break;
       case GL_READ_FRAMEBUFFER_BINDING_ANGLE:           *params = mReadFramebuffer->id();                         break;
       case GL_RENDERBUFFER_BINDING:                     *params = mRenderbuffer.id();                             break;
       case GL_VERTEX_ARRAY_BINDING:                     *params = mVertexArray->id();                             break;
       case GL_CURRENT_PROGRAM:                          *params = mProgram ? mProgram->id() : 0;                  break;
       case GL_PACK_ALIGNMENT:                           *params = mPack.alignment;                                break;
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/State.h
+++ b/gfx/angle/src/libANGLE/State.h
@@ -210,16 +210,19 @@ class State : angle::NonCopyable
     GLuint getActiveQueryId(GLenum target) const;
     Query *getActiveQuery(GLenum target) const;
 
     //// Typed buffer binding point manipulation ////
     // GL_ARRAY_BUFFER
     void setArrayBufferBinding(Buffer *buffer);
     GLuint getArrayBufferId() const;
 
+    void setDrawIndirectBufferBinding(Buffer *buffer);
+    Buffer *getDrawIndirectBuffer() const { return mDrawIndirectBuffer.get(); }
+
     // GL_UNIFORM_BUFFER - Both indexed and generic targets
     void setGenericUniformBufferBinding(Buffer *buffer);
     void setIndexedUniformBufferBinding(GLuint index, Buffer *buffer, GLintptr offset, GLsizeiptr size);
     const OffsetBindingPointer<Buffer> &getIndexedUniformBuffer(size_t index) const;
 
     // GL_COPY_[READ/WRITE]_BUFFER
     void setCopyReadBufferBinding(Buffer *buffer);
     void setCopyWriteBufferBinding(Buffer *buffer);
@@ -356,16 +359,17 @@ class State : angle::NonCopyable
         DIRTY_BIT_PACK_BUFFER_BINDING,
         DIRTY_BIT_DITHER_ENABLED,
         DIRTY_BIT_GENERATE_MIPMAP_HINT,
         DIRTY_BIT_SHADER_DERIVATIVE_HINT,
         DIRTY_BIT_READ_FRAMEBUFFER_BINDING,
         DIRTY_BIT_DRAW_FRAMEBUFFER_BINDING,
         DIRTY_BIT_RENDERBUFFER_BINDING,
         DIRTY_BIT_VERTEX_ARRAY_BINDING,
+        DIRTY_BIT_DRAW_INDIRECT_BUFFER_BINDING,
         DIRTY_BIT_PROGRAM_BINDING,
         DIRTY_BIT_MULTISAMPLING,
         DIRTY_BIT_SAMPLE_ALPHA_TO_ONE,
         DIRTY_BIT_COVERAGE_MODULATION,         // CHROMIUM_framebuffer_mixed_samples
         DIRTY_BIT_PATH_RENDERING_MATRIX_MV,    // CHROMIUM_path_rendering path model view matrix
         DIRTY_BIT_PATH_RENDERING_MATRIX_PROJ,  // CHROMIUM_path_rendering path projection matrix
         DIRTY_BIT_PATH_RENDERING_STENCIL_STATE,
         DIRTY_BIT_FRAMEBUFFER_SRGB,  // GL_EXT_sRGB_write_control
@@ -430,16 +434,17 @@ class State : angle::NonCopyable
 
     bool mBindGeneratesResource;
 
     Rectangle mViewport;
     float mNearZ;
     float mFarZ;
 
     BindingPointer<Buffer> mArrayBuffer;
+    BindingPointer<Buffer> mDrawIndirectBuffer;
     Framebuffer *mReadFramebuffer;
     Framebuffer *mDrawFramebuffer;
     BindingPointer<Renderbuffer> mRenderbuffer;
     Program *mProgram;
 
     typedef std::vector<VertexAttribCurrentValueData> VertexAttribVector;
     VertexAttribVector mVertexAttribCurrentValues; // From glVertexAttrib
     VertexArray *mVertexArray;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Texture.cpp
+++ b/gfx/angle/src/libANGLE/Texture.cpp
@@ -86,16 +86,17 @@ bool SwizzleState::operator!=(const Swiz
 }
 
 TextureState::TextureState(GLenum target)
     : mTarget(target),
       mSwizzleState(GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA),
       mSamplerState(SamplerState::CreateDefaultForTarget(target)),
       mBaseLevel(0),
       mMaxLevel(1000),
+      mDepthStencilTextureMode(GL_DEPTH_COMPONENT),
       mImmutableFormat(false),
       mImmutableLevels(0),
       mUsage(GL_NONE),
       mImageDescs((IMPLEMENTATION_MAX_TEXTURE_LEVELS + 1) *
                   (target == GL_TEXTURE_CUBE_MAP ? 6 : 1)),
       mCompletenessCache()
 {
 }
@@ -719,16 +720,33 @@ void Texture::setMaxLevel(GLuint maxLeve
     mDirtyBits.set(DIRTY_BIT_MAX_LEVEL);
 }
 
 GLuint Texture::getMaxLevel() const
 {
     return mState.mMaxLevel;
 }
 
+void Texture::setDepthStencilTextureMode(GLenum mode)
+{
+    if (mode != mState.mDepthStencilTextureMode)
+    {
+        // Changing the mode from the default state (GL_DEPTH_COMPONENT) is not implemented yet
+        UNIMPLEMENTED();
+    }
+
+    // TODO(geofflang): add dirty bits
+    mState.mDepthStencilTextureMode = mode;
+}
+
+GLenum Texture::getDepthStencilTextureMode() const
+{
+    return mState.mDepthStencilTextureMode;
+}
+
 bool Texture::getImmutableFormat() const
 {
     return mState.mImmutableFormat;
 }
 
 GLuint Texture::getImmutableLevels() const
 {
     return mState.mImmutableLevels;
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/Texture.h
+++ b/gfx/angle/src/libANGLE/Texture.h
@@ -127,16 +127,18 @@ struct TextureState final : public angle
 
     SwizzleState mSwizzleState;
 
     SamplerState mSamplerState;
 
     GLuint mBaseLevel;
     GLuint mMaxLevel;
 
+    GLenum mDepthStencilTextureMode;
+
     bool mImmutableFormat;
     GLuint mImmutableLevels;
 
     // From GL_ANGLE_texture_usage
     GLenum mUsage;
 
     std::vector<ImageDesc> mImageDescs;
 
@@ -223,16 +225,19 @@ class Texture final : public egl::ImageS
     const SamplerState &getSamplerState() const;
 
     void setBaseLevel(GLuint baseLevel);
     GLuint getBaseLevel() const;
 
     void setMaxLevel(GLuint maxLevel);
     GLuint getMaxLevel() const;
 
+    void setDepthStencilTextureMode(GLenum mode);
+    GLenum getDepthStencilTextureMode() const;
+
     bool getImmutableFormat() const;
 
     GLuint getImmutableLevels() const;
 
     void setUsage(GLenum usage);
     GLenum getUsage() const;
 
     const TextureState &getTextureState() const;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/WorkerThread.cpp
@@ -0,0 +1,157 @@
+//
+// Copyright 2016 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.
+//
+// WorkerThread:
+//   Task running thread for ANGLE, similar to a TaskRunner in Chromium.
+//   Might be implemented differently depending on platform.
+//
+
+#include "libANGLE/WorkerThread.h"
+
+namespace angle
+{
+
+namespace priv
+{
+// SingleThreadedWorkerPool implementation.
+SingleThreadedWorkerPool::SingleThreadedWorkerPool(size_t maxThreads)
+    : WorkerThreadPoolBase(maxThreads)
+{
+}
+
+SingleThreadedWorkerPool::~SingleThreadedWorkerPool()
+{
+}
+
+SingleThreadedWaitableEvent SingleThreadedWorkerPool::postWorkerTaskImpl(Closure *task)
+{
+    (*task)();
+    return SingleThreadedWaitableEvent(EventResetPolicy::Automatic, EventInitialState::Signaled);
+}
+
+// SingleThreadedWaitableEvent implementation.
+SingleThreadedWaitableEvent::SingleThreadedWaitableEvent()
+    : SingleThreadedWaitableEvent(EventResetPolicy::Automatic, EventInitialState::NonSignaled)
+{
+}
+
+SingleThreadedWaitableEvent::SingleThreadedWaitableEvent(EventResetPolicy resetPolicy,
+                                                         EventInitialState initialState)
+    : WaitableEventBase(resetPolicy, initialState)
+{
+}
+
+SingleThreadedWaitableEvent::~SingleThreadedWaitableEvent()
+{
+}
+
+SingleThreadedWaitableEvent::SingleThreadedWaitableEvent(SingleThreadedWaitableEvent &&other)
+    : WaitableEventBase(std::move(other))
+{
+}
+
+SingleThreadedWaitableEvent &SingleThreadedWaitableEvent::operator=(
+    SingleThreadedWaitableEvent &&other)
+{
+    return copyBase(std::move(other));
+}
+
+void SingleThreadedWaitableEvent::resetImpl()
+{
+    mSignaled = false;
+}
+
+void SingleThreadedWaitableEvent::waitImpl()
+{
+}
+
+void SingleThreadedWaitableEvent::signalImpl()
+{
+    mSignaled = true;
+}
+
+#if (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+// AsyncWorkerPool implementation.
+AsyncWorkerPool::AsyncWorkerPool(size_t maxThreads) : WorkerThreadPoolBase(maxThreads)
+{
+}
+
+AsyncWorkerPool::~AsyncWorkerPool()
+{
+}
+
+AsyncWaitableEvent AsyncWorkerPool::postWorkerTaskImpl(Closure *task)
+{
+    auto future = std::async(std::launch::async, [task] { (*task)(); });
+
+    AsyncWaitableEvent waitable(EventResetPolicy::Automatic, EventInitialState::NonSignaled);
+
+    waitable.setFuture(std::move(future));
+
+    return waitable;
+}
+
+// AsyncWaitableEvent implementation.
+AsyncWaitableEvent::AsyncWaitableEvent()
+    : AsyncWaitableEvent(EventResetPolicy::Automatic, EventInitialState::NonSignaled)
+{
+}
+
+AsyncWaitableEvent::AsyncWaitableEvent(EventResetPolicy resetPolicy, EventInitialState initialState)
+    : WaitableEventBase(resetPolicy, initialState)
+{
+}
+
+AsyncWaitableEvent::~AsyncWaitableEvent()
+{
+}
+
+AsyncWaitableEvent::AsyncWaitableEvent(AsyncWaitableEvent &&other)
+    : WaitableEventBase(std::move(other)), mFuture(std::move(other.mFuture))
+{
+}
+
+AsyncWaitableEvent &AsyncWaitableEvent::operator=(AsyncWaitableEvent &&other)
+{
+    std::swap(mFuture, other.mFuture);
+    return copyBase(std::move(other));
+}
+
+void AsyncWaitableEvent::setFuture(std::future<void> &&future)
+{
+    mFuture = std::move(future);
+}
+
+void AsyncWaitableEvent::resetImpl()
+{
+    mSignaled = false;
+    mFuture   = std::future<void>();
+}
+
+void AsyncWaitableEvent::waitImpl()
+{
+    if (mSignaled || !mFuture.valid())
+    {
+        return;
+    }
+
+    mFuture.wait();
+    signal();
+}
+
+void AsyncWaitableEvent::signalImpl()
+{
+    mSignaled = true;
+
+    if (mResetPolicy == EventResetPolicy::Automatic)
+    {
+        reset();
+    }
+}
+#endif  // (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+
+}  // namespace priv
+
+}  // namespace angle
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/WorkerThread.h
@@ -0,0 +1,284 @@
+//
+// Copyright 2016 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.
+//
+// WorkerThread:
+//   Asychronous tasks/threads for ANGLE, similar to a TaskRunner in Chromium.
+//   Can be implemented as different targets, depending on platform.
+//
+
+#ifndef LIBANGLE_WORKER_THREAD_H_
+#define LIBANGLE_WORKER_THREAD_H_
+
+#include <array>
+#include <vector>
+
+#include "common/debug.h"
+#include "libANGLE/features.h"
+
+#if (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+#include <future>
+#endif  // (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+
+namespace angle
+{
+// Indicates whether a WaitableEvent should automatically reset the event state after a single
+// waiting thread has been released or remain signaled until reset() is manually invoked.
+enum class EventResetPolicy
+{
+    Manual,
+    Automatic
+};
+
+// Specify the initial state on creation.
+enum class EventInitialState
+{
+    NonSignaled,
+    Signaled
+};
+
+// A callback function with no return value and no arguments.
+class Closure
+{
+  public:
+    virtual ~Closure()        = default;
+    virtual void operator()() = 0;
+};
+
+namespace priv
+{
+// An event that we can wait on, useful for joining worker threads.
+template <typename Impl>
+class WaitableEventBase : angle::NonCopyable
+{
+  public:
+    WaitableEventBase(EventResetPolicy resetPolicy, EventInitialState initialState);
+
+    WaitableEventBase(WaitableEventBase &&other);
+
+    // Puts the event in the un-signaled state.
+    void reset();
+
+    // Waits indefinitely for the event to be signaled.
+    void wait();
+
+    // Puts the event in the signaled state, causing any thread blocked on Wait to be woken up.
+    // The event state is reset to non-signaled after a waiting thread has been released.
+    void signal();
+
+  protected:
+    Impl &copyBase(Impl &&other);
+
+    template <size_t Count>
+    static size_t WaitManyBase(std::array<Impl, Count> *waitables);
+
+    EventResetPolicy mResetPolicy;
+    bool mSignaled;
+};
+
+template <typename Impl>
+WaitableEventBase<Impl>::WaitableEventBase(EventResetPolicy resetPolicy,
+                                           EventInitialState initialState)
+    : mResetPolicy(resetPolicy), mSignaled(initialState == EventInitialState::Signaled)
+{
+}
+
+template <typename Impl>
+WaitableEventBase<Impl>::WaitableEventBase(WaitableEventBase &&other)
+    : mResetPolicy(other.mResetPolicy), mSignaled(other.mSignaled)
+{
+}
+
+template <typename Impl>
+void WaitableEventBase<Impl>::reset()
+{
+    static_cast<Impl *>(this)->resetImpl();
+}
+
+template <typename Impl>
+void WaitableEventBase<Impl>::wait()
+{
+    static_cast<Impl *>(this)->waitImpl();
+}
+
+template <typename Impl>
+void WaitableEventBase<Impl>::signal()
+{
+    static_cast<Impl *>(this)->signalImpl();
+}
+
+template <typename Impl>
+template <size_t Count>
+// static
+size_t WaitableEventBase<Impl>::WaitManyBase(std::array<Impl, Count> *waitables)
+{
+    ASSERT(Count > 0);
+
+    for (size_t index = 0; index < Count; ++index)
+    {
+        (*waitables)[index].wait();
+    }
+
+    return 0;
+}
+
+template <typename Impl>
+Impl &WaitableEventBase<Impl>::copyBase(Impl &&other)
+{
+    std::swap(mSignaled, other.mSignaled);
+    std::swap(mResetPolicy, other.mResetPolicy);
+    return *static_cast<Impl *>(this);
+}
+
+class SingleThreadedWaitableEvent : public WaitableEventBase<SingleThreadedWaitableEvent>
+{
+  public:
+    SingleThreadedWaitableEvent();
+    SingleThreadedWaitableEvent(EventResetPolicy resetPolicy, EventInitialState initialState);
+    ~SingleThreadedWaitableEvent();
+
+    SingleThreadedWaitableEvent(SingleThreadedWaitableEvent &&other);
+    SingleThreadedWaitableEvent &operator=(SingleThreadedWaitableEvent &&other);
+
+    void resetImpl();
+    void waitImpl();
+    void signalImpl();
+
+    // Wait, synchronously, on multiple events.
+    // returns the index of a WaitableEvent which has been signaled.
+    template <size_t Count>
+    static size_t WaitMany(std::array<SingleThreadedWaitableEvent, Count> *waitables);
+};
+
+template <size_t Count>
+// static
+size_t SingleThreadedWaitableEvent::WaitMany(
+    std::array<SingleThreadedWaitableEvent, Count> *waitables)
+{
+    return WaitableEventBase<SingleThreadedWaitableEvent>::WaitManyBase(waitables);
+}
+
+#if (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+class AsyncWaitableEvent : public WaitableEventBase<AsyncWaitableEvent>
+{
+  public:
+    AsyncWaitableEvent();
+    AsyncWaitableEvent(EventResetPolicy resetPolicy, EventInitialState initialState);
+    ~AsyncWaitableEvent();
+
+    AsyncWaitableEvent(AsyncWaitableEvent &&other);
+    AsyncWaitableEvent &operator=(AsyncWaitableEvent &&other);
+
+    void resetImpl();
+    void waitImpl();
+    void signalImpl();
+
+    // Wait, synchronously, on multiple events.
+    // returns the index of a WaitableEvent which has been signaled.
+    template <size_t Count>
+    static size_t WaitMany(std::array<AsyncWaitableEvent, Count> *waitables);
+
+  private:
+    friend class AsyncWorkerPool;
+    void setFuture(std::future<void> &&future);
+
+    std::future<void> mFuture;
+};
+
+template <size_t Count>
+// static
+size_t AsyncWaitableEvent::WaitMany(std::array<AsyncWaitableEvent, Count> *waitables)
+{
+    return WaitableEventBase<AsyncWaitableEvent>::WaitManyBase(waitables);
+}
+#endif  // (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+
+// The traits class allows the the thread pool to return the "Typed" waitable event from postTask.
+// Otherwise postTask would always think it returns the current active type, so the unit tests
+// could not run on multiple worker types in the same compilation.
+template <typename Impl>
+struct WorkerThreadPoolTraits;
+
+class SingleThreadedWorkerPool;
+template <>
+struct WorkerThreadPoolTraits<SingleThreadedWorkerPool>
+{
+    using WaitableEventType = SingleThreadedWaitableEvent;
+};
+
+#if (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+class AsyncWorkerPool;
+template <>
+struct WorkerThreadPoolTraits<AsyncWorkerPool>
+{
+    using WaitableEventType = AsyncWaitableEvent;
+};
+#endif  // (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+
+// Request WorkerThreads from the WorkerThreadPool. Each pool can keep worker threads around so
+// we avoid the costly spin up and spin down time.
+template <typename Impl>
+class WorkerThreadPoolBase : angle::NonCopyable
+{
+  public:
+    WorkerThreadPoolBase(size_t maxThreads);
+    ~WorkerThreadPoolBase();
+
+    using WaitableEventType = typename WorkerThreadPoolTraits<Impl>::WaitableEventType;
+
+    // Returns an event to wait on for the task to finish.
+    // If the pool fails to create the task, returns null.
+    WaitableEventType postWorkerTask(Closure *task);
+};
+
+template <typename Impl>
+WorkerThreadPoolBase<Impl>::WorkerThreadPoolBase(size_t maxThreads)
+{
+}
+
+template <typename Impl>
+WorkerThreadPoolBase<Impl>::~WorkerThreadPoolBase()
+{
+}
+
+template <typename Impl>
+typename WorkerThreadPoolBase<Impl>::WaitableEventType WorkerThreadPoolBase<Impl>::postWorkerTask(
+    Closure *task)
+{
+    return static_cast<Impl *>(this)->postWorkerTaskImpl(task);
+}
+
+class SingleThreadedWorkerPool : public WorkerThreadPoolBase<SingleThreadedWorkerPool>
+{
+  public:
+    SingleThreadedWorkerPool(size_t maxThreads);
+    ~SingleThreadedWorkerPool();
+
+    SingleThreadedWaitableEvent postWorkerTaskImpl(Closure *task);
+};
+
+#if (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+class AsyncWorkerPool : public WorkerThreadPoolBase<AsyncWorkerPool>
+{
+  public:
+    AsyncWorkerPool(size_t maxThreads);
+    ~AsyncWorkerPool();
+
+    AsyncWaitableEvent postWorkerTaskImpl(Closure *task);
+};
+#endif  // (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+
+}  // namespace priv
+
+#if (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+using WaitableEvent    = priv::AsyncWaitableEvent;
+using WorkerThreadPool = priv::AsyncWorkerPool;
+#else
+using WaitableEvent    = priv::SingleThreadedWaitableEvent;
+using WorkerThreadPool = priv::SingleThreadedWorkerPool;
+#endif  // (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+
+}  // namespace angle
+
+#endif  // LIBANGLE_WORKER_THREAD_H_
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/WorkerThread_unittest.cpp
@@ -0,0 +1,59 @@
+//
+// Copyright 2016 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.
+//
+// WorkerThread_unittest:
+//   Simple tests for the worker thread class.
+
+#include <array>
+#include <gtest/gtest.h>
+
+#include "libANGLE/WorkerThread.h"
+
+using namespace angle;
+
+namespace
+{
+
+template <typename T>
+class WorkerPoolTest : public ::testing::Test
+{
+  public:
+    T workerPool = {4};
+};
+
+#if (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+using WorkerPoolTypes = ::testing::Types<priv::AsyncWorkerPool, priv::SingleThreadedWorkerPool>;
+#else
+using WorkerPoolTypes = ::testing::Types<priv::SingleThreadedWorkerPool>;
+#endif  // (ANGLE_STD_ASYNC_WORKERS == ANGLE_ENABLED)
+
+TYPED_TEST_CASE(WorkerPoolTest, WorkerPoolTypes);
+
+// Tests simple worker pool application.
+TYPED_TEST(WorkerPoolTest, SimpleTask)
+{
+    class TestTask : public Closure
+    {
+      public:
+        void operator()() override { fired = true; }
+
+        bool fired = false;
+    };
+
+    std::array<TestTask, 4> tasks;
+    std::array<typename TypeParam::WaitableEventType, 4> waitables = {{
+        this->workerPool.postWorkerTask(&tasks[0]), this->workerPool.postWorkerTask(&tasks[1]),
+        this->workerPool.postWorkerTask(&tasks[2]), this->workerPool.postWorkerTask(&tasks[3]),
+    }};
+
+    TypeParam::WaitableEventType::WaitMany(&waitables);
+
+    for (const auto &task : tasks)
+    {
+        EXPECT_TRUE(task.fired);
+    }
+}
+
+}  // anonymous namespace
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/angletypes.h
+++ b/gfx/angle/src/libANGLE/angletypes.h
@@ -331,11 +331,16 @@ inline GLenum FramebufferBindingToEnum(F
             return GL_DRAW_FRAMEBUFFER;
         case FramebufferBindingBoth:
             return GL_FRAMEBUFFER;
         default:
             UNREACHABLE();
             return GL_NONE;
     }
 }
-}
+}  // namespace angle
+
+namespace gl
+{
+class ContextState;
+}  // namespace gl
 
 #endif // LIBANGLE_ANGLETYPES_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/features.h
+++ b/gfx/angle/src/libANGLE/features.h
@@ -2,16 +2,18 @@
 // Copyright (c) 2014 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 LIBANGLE_FEATURES_H_
 #define LIBANGLE_FEATURES_H_
 
+#include "common/platform.h"
+
 #define ANGLE_DISABLED 0
 #define ANGLE_ENABLED 1
 
 // Feature defaults
 
 // Direct3D9EX
 // The "Debug This Pixel..." feature in PIX often fails when using the
 // D3D9Ex interfaces.  In order to get debug pixel to work on a Vista/Win 7
@@ -45,9 +47,19 @@
 // requested by developers to allow non-conformant shaders to be used which
 // contain mismatched precisions.
 // ENABLED validate that precision for uniforms match between vertex and fragment shaders
 // DISABLED allow precision for uniforms to differ between vertex and fragment shaders
 #if !defined(ANGLE_PROGRAM_LINK_VALIDATE_UNIFORM_PRECISION)
 #define ANGLE_PROGRAM_LINK_VALIDATE_UNIFORM_PRECISION ANGLE_ENABLED
 #endif
 
+// Controls if our threading code uses std::async or falls back to single-threaded operations.
+// TODO(jmadill): Enable on Linux once STL chrono headers are updated.
+#if !defined(ANGLE_STD_ASYNC_WORKERS)
+#if defined(ANGLE_PLATFORM_WINDOWS)
+#define ANGLE_STD_ASYNC_WORKERS ANGLE_ENABLED
+#else
+#define ANGLE_STD_ASYNC_WORKERS ANGLE_DISABLED
+#endif  // defined(ANGLE_PLATFORM_WINDOWS)
+#endif  // !defined(ANGLE_STD_ASYNC_WORKERS)
+
 #endif // LIBANGLE_FEATURES_H_
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/formatutils.cpp
+++ b/gfx/angle/src/libANGLE/formatutils.cpp
@@ -713,81 +713,91 @@ const InternalFormat &GetInternalFormatI
     }
     else
     {
         static const InternalFormat defaultInternalFormat;
         return defaultInternalFormat;
     }
 }
 
-ErrorOrResult<GLuint> InternalFormat::computeRowPitch(GLsizei width,
-                                                      GLint alignment,
-                                                      GLint rowLength) const
+GLuint InternalFormat::computePixelBytes(GLenum formatType) const
+{
+    const auto &typeInfo = GetTypeInfo(formatType);
+    GLuint components    = typeInfo.specialInterpretation ? 1u : componentCount;
+    return components * typeInfo.bytes;
+}
+
+ErrorOrResult<GLuint> InternalFormat::computeRowPitch(GLenum formatType,
+                                                          GLsizei width,
+                                                          GLint alignment,
+                                                          GLint rowLength) const
 {
     // Compressed images do not use pack/unpack parameters.
     if (compressed)
     {
         ASSERT(rowLength == 0);
-        return computeCompressedImageSize(Extents(width, 1, 1));
+        return computeCompressedImageSize(formatType, Extents(width, 1, 1));
     }
 
     CheckedNumeric<GLuint> checkedWidth(rowLength > 0 ? rowLength : width);
-    CheckedNumeric<GLuint> checkedRowBytes = checkedWidth * pixelBytes;
+    CheckedNumeric<GLuint> checkedRowBytes = checkedWidth * computePixelBytes(formatType);
 
     ASSERT(alignment > 0 && isPow2(alignment));
     CheckedNumeric<GLuint> checkedAlignment(alignment);
     auto aligned = rx::roundUp(checkedRowBytes, checkedAlignment);
     ANGLE_TRY_CHECKED_MATH(aligned);
     return aligned.ValueOrDie();
 }
 
 ErrorOrResult<GLuint> InternalFormat::computeDepthPitch(GLsizei height,
                                                         GLint imageHeight,
-                                                        GLuint rowPitch)
+                                                        GLuint rowPitch) const
 {
     GLuint rows =
         (imageHeight > 0 ? static_cast<GLuint>(imageHeight) : static_cast<GLuint>(height));
     CheckedNumeric<GLuint> checkedRowPitch(rowPitch);
 
     auto depthPitch = checkedRowPitch * rows;
     ANGLE_TRY_CHECKED_MATH(depthPitch);
     return depthPitch.ValueOrDie();
 }
 
-ErrorOrResult<GLuint> InternalFormat::computeDepthPitch(GLsizei width,
-                                                        GLsizei height,
-                                                        GLint alignment,
-                                                        GLint rowLength,
-                                                        GLint imageHeight) const
+ErrorOrResult<GLuint> InternalFormat::computeDepthPitch(GLenum formatType,
+                                                            GLsizei width,
+                                                            GLsizei height,
+                                                            GLint alignment,
+                                                            GLint rowLength,
+                                                            GLint imageHeight) const
 {
     GLuint rowPitch = 0;
-    ANGLE_TRY_RESULT(computeRowPitch(width, alignment, rowLength), rowPitch);
+    ANGLE_TRY_RESULT(computeRowPitch(formatType, width, alignment, rowLength), rowPitch);
     return computeDepthPitch(height, imageHeight, rowPitch);
 }
 
-ErrorOrResult<GLuint> InternalFormat::computeCompressedImageSize(const Extents &size) const
+ErrorOrResult<GLuint> InternalFormat::computeCompressedImageSize(GLenum formatType,
+                                                                     const Extents &size) const
 {
     CheckedNumeric<GLuint> checkedWidth(size.width);
     CheckedNumeric<GLuint> checkedHeight(size.height);
     CheckedNumeric<GLuint> checkedDepth(size.depth);
     CheckedNumeric<GLuint> checkedBlockWidth(compressedBlockWidth);
     CheckedNumeric<GLuint> checkedBlockHeight(compressedBlockHeight);
 
     ASSERT(compressed);
     auto numBlocksWide = (checkedWidth + checkedBlockWidth - 1u) / checkedBlockWidth;
     auto numBlocksHigh = (checkedHeight + checkedBlockHeight - 1u) / checkedBlockHeight;
     auto bytes         = numBlocksWide * numBlocksHigh * pixelBytes * checkedDepth;
     ANGLE_TRY_CHECKED_MATH(bytes);
     return bytes.ValueOrDie();
 }
 
 ErrorOrResult<GLuint> InternalFormat::computeSkipBytes(GLuint rowPitch,
-                                                       GLuint depthPitch,
-                                                       const PixelStoreStateBase &state,
-                                                       bool is3D) const
+                                                           GLuint depthPitch,
+                                                           const PixelStoreStateBase &state,
+                                                           bool is3D) const
 {
     CheckedNumeric<GLuint> checkedRowPitch(rowPitch);
     CheckedNumeric<GLuint> checkedDepthPitch(depthPitch);
     CheckedNumeric<GLuint> checkedSkipImages(static_cast<GLuint>(state.skipImages));
     CheckedNumeric<GLuint> checkedSkipRows(static_cast<GLuint>(state.skipRows));
     CheckedNumeric<GLuint> checkedSkipPixels(static_cast<GLuint>(state.skipPixels));
     CheckedNumeric<GLuint> checkedPixelBytes(pixelBytes);
     auto checkedSkipImagesBytes = checkedSkipImages * checkedDepthPitch;
@@ -796,53 +806,54 @@ ErrorOrResult<GLuint> InternalFormat::co
         checkedSkipImagesBytes = 0;
     }
     auto skipBytes = checkedSkipImagesBytes + checkedSkipRows * checkedRowPitch +
                      checkedSkipPixels * checkedPixelBytes;
     ANGLE_TRY_CHECKED_MATH(skipBytes);
     return skipBytes.ValueOrDie();
 }
 
-ErrorOrResult<GLuint> InternalFormat::computePackUnpackEndByte(const Extents &size,
-                                                               const PixelStoreStateBase &state,
-                                                               bool is3D) const
+ErrorOrResult<GLuint> InternalFormat::computePackUnpackEndByte(
+    GLenum formatType,
+    const Extents &size,
+    const PixelStoreStateBase &state,
+    bool is3D) const
 {
     GLuint rowPitch = 0;
-    ANGLE_TRY_RESULT(computeRowPitch(size.width, state.alignment, state.rowLength),
+    ANGLE_TRY_RESULT(computeRowPitch(formatType, size.width, state.alignment, state.rowLength),
                      rowPitch);
 
     GLuint depthPitch = 0;
     if (is3D)
     {
         ANGLE_TRY_RESULT(computeDepthPitch(size.height, state.imageHeight, rowPitch), depthPitch);
     }
 
     CheckedNumeric<GLuint> checkedCopyBytes = 0;
     if (compressed)
     {
-        ANGLE_TRY_RESULT(computeCompressedImageSize(size), checkedCopyBytes);
+        ANGLE_TRY_RESULT(computeCompressedImageSize(formatType, size), checkedCopyBytes);
     }
     else if (size.height != 0 && (!is3D || size.depth != 0))
     {
-        CheckedNumeric<GLuint> bytes = pixelBytes;
+        CheckedNumeric<GLuint> bytes = computePixelBytes(formatType);
         checkedCopyBytes += size.width * bytes;
 
         CheckedNumeric<GLuint> heightMinusOne = size.height - 1;
         checkedCopyBytes += heightMinusOne * rowPitch;
 
         if (is3D)
         {
             CheckedNumeric<GLuint> depthMinusOne = size.depth - 1;
             checkedCopyBytes += depthMinusOne * depthPitch;
         }
     }
 
     CheckedNumeric<GLuint> checkedSkipBytes = 0;
-    ANGLE_TRY_RESULT(computeSkipBytes(rowPitch, depthPitch, state, is3D),
-                     checkedSkipBytes);
+    ANGLE_TRY_RESULT(computeSkipBytes(rowPitch, depthPitch, state, is3D), checkedSkipBytes);
 
     CheckedNumeric<GLuint> endByte = checkedCopyBytes + checkedSkipBytes;
 
     ANGLE_TRY_CHECKED_MATH(endByte);
     return endByte.ValueOrDie();
 }
 
 GLenum GetSizedInternalFormat(GLenum internalFormat, GLenum type)
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/formatutils.h
+++ b/gfx/angle/src/libANGLE/formatutils.h
@@ -43,38 +43,44 @@ struct Type
     bool specialInterpretation;
 };
 const Type &GetTypeInfo(GLenum type);
 
 struct InternalFormat
 {
     InternalFormat();
 
-    ErrorOrResult<GLuint> computeRowPitch(GLsizei width,
+    GLuint computePixelBytes(GLenum formatType) const;
+
+    ErrorOrResult<GLuint> computeRowPitch(GLenum formatType,
+                                          GLsizei width,
                                           GLint alignment,
                                           GLint rowLength) const;
-    static ErrorOrResult<GLuint> computeDepthPitch(GLsizei height,
-                                                   GLint imageHeight,
-                                                   GLuint rowPitch);
-    ErrorOrResult<GLuint> computeDepthPitch(GLsizei width,
+    ErrorOrResult<GLuint> computeDepthPitch(GLsizei height,
+                                            GLint imageHeight,
+                                            GLuint rowPitch) const;
+    ErrorOrResult<GLuint> computeDepthPitch(GLenum formatType,
+                                            GLsizei width,
                                             GLsizei height,
                                             GLint alignment,
                                             GLint rowLength,
                                             GLint imageHeight) const;
 
-    ErrorOrResult<GLuint> computeCompressedImageSize(const Extents &size) const;
+    ErrorOrResult<GLuint> computeCompressedImageSize(GLenum formatType,
+                                                     const Extents &size) const;
 
     ErrorOrResult<GLuint> computeSkipBytes(GLuint rowPitch,
                                            GLuint depthPitch,
                                            const PixelStoreStateBase &state,
                                            bool is3D) const;
 
-    ErrorOrResult<GLuint> computePackUnpackEndByte(const Extents &size,
-                                                   const PixelStoreStateBase &state,
-                                                   bool is3D) const;
+    ErrorOrResult<GLuint> computePackUnpackEndByte(GLenum formatType,
+                                                       const Extents &size,
+                                                       const PixelStoreStateBase &state,
+                                                       bool is3D) const;
 
     bool isLUMA() const;
     GLenum getReadPixelsFormat() const;
     GLenum getReadPixelsType() const;
 
     bool operator==(const InternalFormat &other) const;
     bool operator!=(const InternalFormat &other) const;
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/moz.build
+++ b/gfx/angle/src/libANGLE/moz.build
@@ -46,28 +46,26 @@ UNIFIED_SOURCES += [
     '../compiler/translator/ConstantUnion.cpp',
     '../compiler/translator/DeferGlobalInitializers.cpp',
     '../compiler/translator/Diagnostics.cpp',
     '../compiler/translator/DirectiveHandler.cpp',
     '../compiler/translator/EmulatePrecision.cpp',
     '../compiler/translator/ExpandIntegerPowExpressions.cpp',
     '../compiler/translator/ExtensionGLSL.cpp',
     '../compiler/translator/FlagStd140Structs.cpp',
-    '../compiler/translator/ForLoopUnroll.cpp',
     '../compiler/translator/InfoSink.cpp',
     '../compiler/translator/Initialize.cpp',
     '../compiler/translator/InitializeDll.cpp',
     '../compiler/translator/InitializeParseContext.cpp',
     '../compiler/translator/InitializeVariables.cpp',
     '../compiler/translator/Intermediate.cpp',
     '../compiler/translator/IntermNode.cpp',
     '../compiler/translator/IntermNodePatternMatcher.cpp',
     '../compiler/translator/intermOut.cpp',
     '../compiler/translator/IntermTraverse.cpp',
-    '../compiler/translator/LoopInfo.cpp',
     '../compiler/translator/Operator.cpp',
     '../compiler/translator/OutputESSL.cpp',
     '../compiler/translator/OutputGLSL.cpp',
     '../compiler/translator/OutputGLSLBase.cpp',
     '../compiler/translator/OutputHLSL.cpp',
     '../compiler/translator/ParseContext.cpp',
     '../compiler/translator/PoolAlloc.cpp',
     '../compiler/translator/PruneEmptyDeclarations.cpp',
@@ -168,30 +166,30 @@ UNIFIED_SOURCES += [
     'renderer/d3d/d3d9/SwapChain9.cpp',
     'renderer/d3d/d3d9/TextureStorage9.cpp',
     'renderer/d3d/d3d9/VertexBuffer9.cpp',
     'renderer/d3d/d3d9/VertexDeclarationCache.cpp',
     'renderer/d3d/DeviceD3D.cpp',
     'renderer/d3d/DynamicHLSL.cpp',
     'renderer/d3d/EGLImageD3D.cpp',
     'renderer/d3d/FramebufferD3D.cpp',
+    'renderer/d3d/hlsl/VaryingPacking.cpp',
     'renderer/d3d/ImageD3D.cpp',
     'renderer/d3d/IndexBuffer.cpp',
     'renderer/d3d/IndexDataManager.cpp',
     'renderer/d3d/NativeWindowD3D.cpp',
     'renderer/d3d/ProgramD3D.cpp',
     'renderer/d3d/RenderbufferD3D.cpp',
     'renderer/d3d/RendererD3D.cpp',
     'renderer/d3d/RenderTargetD3D.cpp',
     'renderer/d3d/ShaderD3D.cpp',
     'renderer/d3d/ShaderExecutableD3D.cpp',
     'renderer/d3d/SurfaceD3D.cpp',
     'renderer/d3d/SwapChainD3D.cpp',
     'renderer/d3d/TextureD3D.cpp',
-    'renderer/d3d/VaryingPacking.cpp',
     'renderer/d3d/VertexBuffer.cpp',
     'renderer/d3d/VertexDataManager.cpp',
     'renderer/DeviceImpl.cpp',
     'renderer/DisplayImpl.cpp',
     'renderer/driver_utils.cpp',
     'renderer/Format_table_autogen.cpp',
     'renderer/gl/BlitGL.cpp',
     'renderer/gl/BufferGL.cpp',
@@ -278,16 +276,17 @@ UNIFIED_SOURCES += [
     'Uniform.cpp',
     'validationEGL.cpp',
     'validationES.cpp',
     'validationES2.cpp',
     'validationES3.cpp',
     'validationES31.cpp',
     'VertexArray.cpp',
     'VertexAttribute.cpp',
+    'WorkerThread.cpp',
 ]
 SOURCES += [
     '../compiler/translator/EmulateGLFragColorBroadcast.cpp',
     '../compiler/translator/glslang_lex.cpp',
     '../compiler/translator/glslang_tab.cpp',
     '../compiler/translator/RewriteTexelFetchOffset.cpp',
     '../compiler/translator/ShaderLang.cpp',
     'Display.cpp',
@@ -347,16 +346,19 @@ if CONFIG['GNU_CXX']:
             '-Wno-unused-private-field',
         ]
     else:
         CXXFLAGS += [
             '-Wno-shadow-compatible-local',
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
 if not CONFIG['MOZ_DEBUG']:
     DEFINES['_SECURE_SCL'] = 0
 
 DEFINES['ANGLE_ENABLE_D3D9'] = True
 DEFINES['ANGLE_SKIP_DXGI_1_2_CHECK'] = True
@@ -379,16 +381,21 @@ DEFINES['LIBANGLE_IMPLEMENTATION'] = "1"
 DEFINES['ANGLE_ENABLE_HLSL'] = "1"
 DEFINES['ANGLE_ENABLE_GLSL'] = "1"
 DEFINES['ANGLE_ENABLE_ESSL'] = "1"
 DEFINES['ANGLE_ENABLE_KEYEDMUTEX'] = "1"
 DEFINES['ANGLE_DEFAULT_D3D11'] = "0"
 
 if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
   OS_LIBS += [ 'd3d9', 'dxguid' ]
+else:
+  EXTRA_DSO_LDOPTS += [
+    '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+    '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+  ]
 
 Library('libANGLE')
 
 
 SOURCES['renderer/d3d/HLSLCompiler.cpp'].flags += ['-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES=\'{ TEXT("d3dcompiler_47.dll"), TEXT("d3dcompiler_46.dll"), TEXT("d3dcompiler_43.dll") }\'']
 
 if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
     SOURCES['renderer/d3d/d3d11/SwapChain11.cpp'].flags += ['-DANGLE_RESOURCE_SHARE_TYPE=D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX']
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/queryutils.cpp
+++ b/gfx/angle/src/libANGLE/queryutils.cpp
@@ -151,16 +151,19 @@ void SetTexParameterBase(Texture *textur
             texture->setMaxLevel(ConvertToGLuint(params[0]));
             break;
         case GL_TEXTURE_MIN_LOD:
             texture->setMinLod(ConvertToGLfloat(params[0]));
             break;
         case GL_TEXTURE_MAX_LOD:
             texture->setMaxLod(ConvertToGLfloat(params[0]));
             break;
+        case GL_DEPTH_STENCIL_TEXTURE_MODE:
+            texture->setDepthStencilTextureMode(ConvertToGLenum(params[0]));
+            break;
         case GL_TEXTURE_SRGB_DECODE_EXT:
             texture->setSRGBDecode(ConvertToGLenum(params[0]));
             break;
         default:
             UNREACHABLE();
             break;
     }
 }
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
@@ -11,17 +11,17 @@
 #include "common/utilities.h"
 #include "compiler/translator/blocklayoutHLSL.h"
 #include "libANGLE/Program.h"
 #include "libANGLE/Shader.h"
 #include "libANGLE/formatutils.h"
 #include "libANGLE/renderer/d3d/ProgramD3D.h"
 #include "libANGLE/renderer/d3d/RendererD3D.h"
 #include "libANGLE/renderer/d3d/ShaderD3D.h"
-#include "libANGLE/renderer/d3d/VaryingPacking.h"
+#include "libANGLE/renderer/d3d/hlsl/VaryingPacking.h"
 
 using namespace gl;
 
 namespace rx
 {
 
 namespace
 {
@@ -116,23 +116,16 @@ void WriteArrayString(std::stringstream 
     strstr << i;
     strstr << "]";
 }
 
 constexpr const char *VERTEX_ATTRIBUTE_STUB_STRING = "@@ VERTEX ATTRIBUTES @@";
 constexpr const char *PIXEL_OUTPUT_STUB_STRING     = "@@ PIXEL OUTPUT @@";
 }  // anonymous namespace
 
-std::string GetVaryingSemantic(int majorShaderModel, bool programUsesPointSize)
-{
-    // SM3 reserves the TEXCOORD semantic for point sprite texcoords (gl_PointCoord)
-    // In D3D11 we manually compute gl_PointCoord in the GS.
-    return ((programUsesPointSize && majorShaderModel < 4) ? "COLOR" : "TEXCOORD");
-}
-
 // DynamicHLSL implementation
 
 DynamicHLSL::DynamicHLSL(RendererD3D *const renderer) : mRenderer(renderer)
 {
 }
 
 void DynamicHLSL::generateVaryingHLSL(const VaryingPacking &varyingPacking,
                                       std::stringstream &hlslStream) const
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/DynamicHLSL.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/DynamicHLSL.h
@@ -92,12 +92,11 @@ class DynamicHLSL : angle::NonCopyable
 
     // Prepend an underscore
     static std::string decorateVariable(const std::string &name);
 
     std::string generateAttributeConversionHLSL(gl::VertexFormatType vertexFormatType,
                                                 const sh::ShaderVariable &shaderAttrib) const;
 };
 
-std::string GetVaryingSemantic(int majorShaderModel, bool programUsesPointSize);
 }
 
 #endif  // LIBANGLE_RENDERER_D3D_DYNAMICHLSL_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
@@ -235,23 +235,25 @@ GLenum FramebufferD3D::getImplementation
 gl::Error FramebufferD3D::readPixels(ContextImpl *context,
                                      const gl::Rectangle &area,
                                      GLenum format,
                                      GLenum type,
                                      GLvoid *pixels) const
 {
     const gl::PixelPackState &packState = context->getGLState().getPackState();
 
-    const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(gl::GetSizedInternalFormat(format, type));
+    GLenum sizedInternalFormat = gl::GetSizedInternalFormat(format, type);
+    const gl::InternalFormat &sizedFormatInfo = gl::GetInternalFormatInfo(sizedInternalFormat);
 
     GLuint outputPitch = 0;
-    ANGLE_TRY_RESULT(formatInfo.computeRowPitch(area.width, packState.alignment, packState.rowLength),
-                     outputPitch);
+    ANGLE_TRY_RESULT(
+        sizedFormatInfo.computeRowPitch(type, area.width, packState.alignment, packState.rowLength),
+        outputPitch);
     GLuint outputSkipBytes = 0;
-    ANGLE_TRY_RESULT(formatInfo.computeSkipBytes(outputPitch, 0, packState, false),
+    ANGLE_TRY_RESULT(sizedFormatInfo.computeSkipBytes(outputPitch, 0, packState, false),
                      outputSkipBytes);
 
     return readPixelsImpl(area, format, type, outputPitch, packState,
                           reinterpret_cast<uint8_t *>(pixels) + outputSkipBytes);
 }
 
 gl::Error FramebufferD3D::blit(ContextImpl *context,
                                const gl::Rectangle &sourceArea,
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
@@ -101,21 +101,21 @@ HLSLCompiler::HLSLCompiler()
 {
 }
 
 HLSLCompiler::~HLSLCompiler()
 {
     release();
 }
 
-gl::Error HLSLCompiler::initialize()
+gl::Error HLSLCompiler::ensureInitialized()
 {
     if (mInitialized)
     {
-        return gl::Error(GL_NO_ERROR);
+        return gl::NoError();
     }
 
     TRACE_EVENT0("gpu.angle", "HLSLCompiler::initialize");
 #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
 #if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES)
     // Find a D3DCompiler module that had already been loaded based on a predefined list of versions.
     static const char *d3dCompilerNames[] = ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES;
 
@@ -155,17 +155,17 @@ gl::Error HLSLCompiler::initialize()
 #endif
 
     if (mD3DCompileFunc == nullptr)
     {
         return gl::Error(GL_OUT_OF_MEMORY, "Error finding D3DCompile entry point.");
     }
 
     mInitialized = true;
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 void HLSLCompiler::release()
 {
     if (mInitialized)
     {
         FreeLibrary(mD3DCompilerModule);
         mD3DCompilerModule = nullptr;
@@ -174,21 +174,17 @@ void HLSLCompiler::release()
         mInitialized = false;
     }
 }
 
 gl::Error HLSLCompiler::compileToBinary(gl::InfoLog &infoLog, const std::string &hlsl, const std::string &profile,
                                         const std::vector<CompileConfig> &configs, const D3D_SHADER_MACRO *overrideMacros,
                                         ID3DBlob **outCompiledBlob, std::string *outDebugInfo)
 {
-    gl::Error error = initialize();
-    if (error.isError())
-    {
-        return error;
-    }
+    ASSERT(mInitialized);
 
 #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
     ASSERT(mD3DCompilerModule);
 #endif
     ASSERT(mD3DCompileFunc);
 
 #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
     if (gl::DebugAnnotationsActive())
@@ -265,24 +261,20 @@ gl::Error HLSLCompiler::compileToBinary(
             {
                 for (const D3D_SHADER_MACRO *mIt = macros; mIt->Name != nullptr; ++mIt)
                 {
                     (*outDebugInfo) += std::string("// ") + mIt->Name + " : " + mIt->Definition + "\n";
                 }
             }
 
             std::string disassembly;
-            error = disassembleBinary(binary, &disassembly);
-            if (error.isError())
-            {
-                return error;
-            }
+            ANGLE_TRY(disassembleBinary(binary, &disassembly));
             (*outDebugInfo) += "\n" + disassembly + "\n// ASSEMBLY END\n";
 #endif  // ANGLE_APPEND_ASSEMBLY_TO_SHADER_DEBUG_INFO == ANGLE_ENABLED
-            return gl::Error(GL_NO_ERROR);
+            return gl::NoError();
         }
 
         if (result == E_OUTOFMEMORY)
         {
             *outCompiledBlob = nullptr;
             return gl::Error(GL_OUT_OF_MEMORY, "HLSL compiler had an unexpected failure, result: 0x%X.", result);
         }
 
@@ -292,26 +284,22 @@ gl::Error HLSLCompiler::compileToBinary(
         if (i + 1 < configs.size())
         {
             infoLog << " Retrying with " << configs[i + 1].name;
         }
     }
 
     // None of the configurations succeeded in compiling this shader but the compiler is still intact
     *outCompiledBlob = nullptr;
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 gl::Error HLSLCompiler::disassembleBinary(ID3DBlob *shaderBinary, std::string *disassemblyOut)
 {
-    gl::Error error = initialize();
-    if (error.isError())
-    {
-        return error;
-    }
+    ANGLE_TRY(ensureInitialized());
 
     // Retrieve disassembly
     UINT flags = D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS | D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING;
     ID3DBlob *disassembly = nullptr;
     pD3DDisassemble disassembleFunc = reinterpret_cast<pD3DDisassemble>(mD3DDisassembleFunc);
     LPCVOID buffer = shaderBinary->GetBufferPointer();
     SIZE_T bufSize = shaderBinary->GetBufferSize();
     HRESULT result = disassembleFunc(buffer, bufSize, flags, "", &disassembly);
@@ -322,12 +310,12 @@ gl::Error HLSLCompiler::disassembleBinar
     }
     else
     {
         *disassemblyOut = "";
     }
 
     SafeRelease(disassembly);
 
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 }  // namespace rx
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/HLSLCompiler.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/HLSLCompiler.h
@@ -1,8 +1,16 @@
+//
+// Copyright (c) 2016 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.
+//
+// HLSLCompiler: Wrapper for the D3DCompiler DLL.
+//
+
 #ifndef LIBANGLE_RENDERER_D3D_HLSLCOMPILER_H_
 #define LIBANGLE_RENDERER_D3D_HLSLCOMPILER_H_
 
 #include "libANGLE/Error.h"
 
 #include "common/angleutils.h"
 #include "common/platform.h"
 
@@ -36,21 +44,21 @@ class HLSLCompiler : angle::NonCopyable
 
     // Attempt to compile a HLSL shader using the supplied configurations, may output a NULL compiled blob
     // even if no GL errors are returned.
     gl::Error compileToBinary(gl::InfoLog &infoLog, const std::string &hlsl, const std::string &profile,
                               const std::vector<CompileConfig> &configs, const D3D_SHADER_MACRO *overrideMacros,
                               ID3DBlob **outCompiledBlob, std::string *outDebugInfo);
 
     gl::Error disassembleBinary(ID3DBlob *shaderBinary, std::string *disassemblyOut);
+    gl::Error ensureInitialized();
 
   private:
-    gl::Error initialize();
 
     bool mInitialized;
     HMODULE mD3DCompilerModule;
     pD3DCompile mD3DCompileFunc;
     pD3DDisassemble mD3DDisassembleFunc;
 };
 
 }
 
-#endif // LIBANGLE_RENDERER_D3D_HLSLCOMPILER_H_
+#endif  // LIBANGLE_RENDERER_D3D_HLSLCOMPILER_H_
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/ImageD3D.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/ImageD3D.cpp
@@ -5,17 +5,16 @@
 //
 
 // Image.h: Implements the rx::Image class, an abstract base class for the
 // renderer-specific classes which will define the interface to the underlying
 // surfaces or resources.
 
 #include "libANGLE/renderer/d3d/ImageD3D.h"
 
-#include "libANGLE/formatutils.h"
 #include "libANGLE/Framebuffer.h"
 #include "libANGLE/FramebufferAttachment.h"
 #include "libANGLE/renderer/d3d/FramebufferD3D.h"
 #include "libANGLE/renderer/d3d/RenderTargetD3D.h"
 
 namespace rx
 {
 
@@ -25,18 +24,9 @@ ImageD3D::ImageD3D()
       mDepth(0),
       mInternalFormat(GL_NONE),
       mRenderable(false),
       mTarget(GL_NONE),
       mDirty(false)
 {
 }
 
-GLenum
-ImageD3D::getSizedInputFormat(GLenum inputType) const
-{
-    const auto &internalFormat = gl::GetInternalFormatInfo(mInternalFormat);
-    const auto &unsizedInternalFormat = internalFormat.format;
-    const auto &sizedInputFormat = gl::GetSizedInternalFormat(unsizedInternalFormat, inputType);
-    return sizedInputFormat;
-}
-
 }  // namespace rx
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/ImageD3D.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/ImageD3D.h
@@ -46,18 +46,16 @@ class ImageD3D : angle::NonCopyable
     bool isRenderableFormat() const { return mRenderable; }
 
     void markDirty() { mDirty = true; }
     void markClean() { mDirty = false; }
     virtual bool isDirty() const = 0;
 
     virtual bool redefine(GLenum target, GLenum internalformat, const gl::Extents &size, bool forceRelease) = 0;
 
-    GLenum getSizedInputFormat(GLenum inputType) const;
-
     virtual gl::Error loadData(const gl::Box &area,
                                const gl::PixelUnpackState &unpack,
                                GLenum type,
                                const void *input,
                                bool applySkipImages) = 0;
     virtual gl::Error loadCompressedData(const gl::Box &area, const void *input) = 0;
 
     virtual gl::Error setManagedSurface2D(TextureStorage *storage, int level) { return gl::Error(GL_NO_ERROR); };
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -16,18 +16,20 @@
 #include "libANGLE/Uniform.h"
 #include "libANGLE/VertexArray.h"
 #include "libANGLE/features.h"
 #include "libANGLE/renderer/d3d/DynamicHLSL.h"
 #include "libANGLE/renderer/d3d/FramebufferD3D.h"
 #include "libANGLE/renderer/d3d/RendererD3D.h"
 #include "libANGLE/renderer/d3d/ShaderD3D.h"
 #include "libANGLE/renderer/d3d/ShaderExecutableD3D.h"
-#include "libANGLE/renderer/d3d/VaryingPacking.h"
 #include "libANGLE/renderer/d3d/VertexDataManager.h"
+#include "libANGLE/renderer/d3d/hlsl/VaryingPacking.h"
+
+using namespace angle;
 
 namespace rx
 {
 
 namespace
 {
 
 gl::InputLayout GetDefaultInputLayoutFromShader(const gl::Shader *vertexShader)
@@ -466,16 +468,70 @@ GLint ProgramD3DMetadata::getMajorShader
     return mVertexShader->getData().getShaderVersion();
 }
 
 const ShaderD3D *ProgramD3DMetadata::getFragmentShader() const
 {
     return mFragmentShader;
 }
 
+void ProgramD3DMetadata::updatePackingBuiltins(ShaderType shaderType, VaryingPacking *packing)
+{
+    const std::string &userSemantic =
+        GetVaryingSemantic(mRendererMajorShaderModel, usesSystemValuePointSize());
+
+    unsigned int reservedSemanticIndex = packing->getMaxSemanticIndex();
+
+    VaryingPacking::BuiltinInfo *builtins = &packing->builtins(shaderType);
+
+    if (mRendererMajorShaderModel >= 4)
+    {
+        builtins->dxPosition.enableSystem("SV_Position");
+    }
+    else if (shaderType == SHADER_PIXEL)
+    {
+        builtins->dxPosition.enableSystem("VPOS");
+    }
+    else
+    {
+        builtins->dxPosition.enableSystem("POSITION");
+    }
+
+    if (usesTransformFeedbackGLPosition())
+    {
+        builtins->glPosition.enable(userSemantic, reservedSemanticIndex++);
+    }
+
+    if (usesFragCoord())
+    {
+        builtins->glFragCoord.enable(userSemantic, reservedSemanticIndex++);
+    }
+
+    if (shaderType == SHADER_VERTEX ? addsPointCoordToVertexShader() : usesPointCoord())
+    {
+        // SM3 reserves the TEXCOORD semantic for point sprite texcoords (gl_PointCoord)
+        // In D3D11 we manually compute gl_PointCoord in the GS.
+        if (mRendererMajorShaderModel >= 4)
+        {
+            builtins->glPointCoord.enable(userSemantic, reservedSemanticIndex++);
+        }
+        else
+        {
+            builtins->glPointCoord.enable("TEXCOORD", 0);
+        }
+    }
+
+    // Special case: do not include PSIZE semantic in HLSL 3 pixel shaders
+    if (usesSystemValuePointSize() &&
+        (shaderType != SHADER_PIXEL || mRendererMajorShaderModel >= 4))
+    {
+        builtins->glPointSize.enableSystem("PSIZE");
+    }
+}
+
 // ProgramD3D Implementation
 
 ProgramD3D::VertexExecutable::VertexExecutable(const gl::InputLayout &inputLayout,
                                                const Signature &signature,
                                                ShaderExecutableD3D *shaderExecutable)
     : mInputs(inputLayout), mSignature(signature), mShaderExecutable(shaderExecutable)
 {
 }
@@ -1142,38 +1198,34 @@ gl::Error ProgramD3D::getPixelExecutable
         mPixelHLSL, mPixelShaderKey, mUsesFragDepth, outputSignature);
 
     // Generate new pixel executable
     ShaderExecutableD3D *pixelExecutable = NULL;
 
     gl::InfoLog tempInfoLog;
     gl::InfoLog *currentInfoLog = infoLog ? infoLog : &tempInfoLog;
 
-    gl::Error error = mRenderer->compileToExecutable(
+    ANGLE_TRY(mRenderer->compileToExecutable(
         *currentInfoLog, finalPixelHLSL, SHADER_PIXEL, mStreamOutVaryings,
         (mState.getTransformFeedbackBufferMode() == GL_SEPARATE_ATTRIBS), mPixelWorkarounds,
-        &pixelExecutable);
-    if (error.isError())
-    {
-        return error;
-    }
+        &pixelExecutable));
 
     if (pixelExecutable)
     {
         mPixelExecutables.push_back(new PixelExecutable(outputSignature, pixelExecutable));
     }
     else if (!infoLog)
     {
         std::vector<char> tempCharBuffer(tempInfoLog.getLength() + 3);
         tempInfoLog.getLog(static_cast<GLsizei>(tempInfoLog.getLength()), NULL, &tempCharBuffer[0]);
         ERR("Error compiling dynamic pixel executable:\n%s\n", &tempCharBuffer[0]);
     }
 
     *outExectuable = pixelExecutable;
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 gl::Error ProgramD3D::getVertexExecutableForInputLayout(const gl::InputLayout &inputLayout,
                                                         ShaderExecutableD3D **outExectuable,
                                                         gl::InfoLog *infoLog)
 {
     VertexExecutable::getSignature(mRenderer, inputLayout, &mCachedVertexSignature);
 
@@ -1191,39 +1243,35 @@ gl::Error ProgramD3D::getVertexExecutabl
         mVertexHLSL, inputLayout, mState.getAttributes());
 
     // Generate new vertex executable
     ShaderExecutableD3D *vertexExecutable = NULL;
 
     gl::InfoLog tempInfoLog;
     gl::InfoLog *currentInfoLog = infoLog ? infoLog : &tempInfoLog;
 
-    gl::Error error = mRenderer->compileToExecutable(
+    ANGLE_TRY(mRenderer->compileToExecutable(
         *currentInfoLog, finalVertexHLSL, SHADER_VERTEX, mStreamOutVaryings,
         (mState.getTransformFeedbackBufferMode() == GL_SEPARATE_ATTRIBS), mVertexWorkarounds,
-        &vertexExecutable);
-    if (error.isError())
-    {
-        return error;
-    }
+        &vertexExecutable));
 
     if (vertexExecutable)
     {
         mVertexExecutables.push_back(
             new VertexExecutable(inputLayout, mCachedVertexSignature, vertexExecutable));
     }
     else if (!infoLog)
     {
         std::vector<char> tempCharBuffer(tempInfoLog.getLength() + 3);
         tempInfoLog.getLog(static_cast<GLsizei>(tempInfoLog.getLength()), NULL, &tempCharBuffer[0]);
         ERR("Error compiling dynamic vertex executable:\n%s\n", &tempCharBuffer[0]);
     }
 
     *outExectuable = vertexExecutable;
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 gl::Error ProgramD3D::getGeometryExecutableForPrimitiveType(const gl::ContextState &data,
                                                             GLenum drawMode,
                                                             ShaderExecutableD3D **outExecutable,
                                                             gl::InfoLog *infoLog)
 {
     if (outExecutable)
@@ -1269,35 +1317,125 @@ gl::Error ProgramD3D::getGeometryExecuta
 
     if (outExecutable)
     {
         *outExecutable = mGeometryExecutables[geometryShaderType];
     }
     return error;
 }
 
-LinkResult ProgramD3D::compileProgramExecutables(const gl::ContextState &data, gl::InfoLog &infoLog)
+class ProgramD3D::GetExecutableTask : public Closure
+{
+  public:
+    GetExecutableTask(ProgramD3D *program)
+        : mProgram(program), mError(GL_NO_ERROR), mInfoLog(), mResult(nullptr)
+    {
+    }
+
+    virtual gl::Error run() = 0;
+
+    void operator()() override { mError = run(); }
+
+    const gl::Error &getError() const { return mError; }
+    const gl::InfoLog &getInfoLog() const { return mInfoLog; }
+    ShaderExecutableD3D *getResult() { return mResult; }
+
+  protected:
+    ProgramD3D *mProgram;
+    gl::Error mError;
+    gl::InfoLog mInfoLog;
+    ShaderExecutableD3D *mResult;
+};
+
+class ProgramD3D::GetVertexExecutableTask : public ProgramD3D::GetExecutableTask
 {
-    const gl::InputLayout &defaultInputLayout =
-        GetDefaultInputLayoutFromShader(mState.getAttachedVertexShader());
-    ShaderExecutableD3D *defaultVertexExecutable = nullptr;
-    ANGLE_TRY(
-        getVertexExecutableForInputLayout(defaultInputLayout, &defaultVertexExecutable, &infoLog));
+  public:
+    GetVertexExecutableTask(ProgramD3D *program) : GetExecutableTask(program) {}
+    gl::Error run() override
+    {
+        const auto &defaultInputLayout =
+            GetDefaultInputLayoutFromShader(mProgram->mState.getAttachedVertexShader());
+
+        ANGLE_TRY(
+            mProgram->getVertexExecutableForInputLayout(defaultInputLayout, &mResult, &mInfoLog));
+
+        return gl::NoError();
+    }
+};
+
+class ProgramD3D::GetPixelExecutableTask : public ProgramD3D::GetExecutableTask
+{
+  public:
+    GetPixelExecutableTask(ProgramD3D *program) : GetExecutableTask(program) {}
+    gl::Error run() override
+    {
+        const auto &defaultPixelOutput =
+            GetDefaultOutputLayoutFromShader(mProgram->getPixelShaderKey());
+
+        ANGLE_TRY(
+            mProgram->getPixelExecutableForOutputLayout(defaultPixelOutput, &mResult, &mInfoLog));
+
+        return gl::NoError();
+    }
+};
 
-    std::vector<GLenum> defaultPixelOutput      = GetDefaultOutputLayoutFromShader(getPixelShaderKey());
-    ShaderExecutableD3D *defaultPixelExecutable = nullptr;
-    ANGLE_TRY(
-        getPixelExecutableForOutputLayout(defaultPixelOutput, &defaultPixelExecutable, &infoLog));
+class ProgramD3D::GetGeometryExecutableTask : public ProgramD3D::GetExecutableTask
+{
+  public:
+    GetGeometryExecutableTask(ProgramD3D *program, const gl::ContextState &contextState)
+        : GetExecutableTask(program), mContextState(contextState)
+    {
+    }
+
+    gl::Error run() override
+    {
+        // Auto-generate the geometry shader here, if we expect to be using point rendering in
+        // D3D11.
+        if (mProgram->usesGeometryShader(GL_POINTS))
+        {
+            ANGLE_TRY(mProgram->getGeometryExecutableForPrimitiveType(mContextState, GL_POINTS,
+                                                                      &mResult, &mInfoLog));
+        }
+
+        return gl::NoError();
+    }
+
+  private:
+    const gl::ContextState &mContextState;
+};
 
-    // Auto-generate the geometry shader here, if we expect to be using point rendering in D3D11.
-    ShaderExecutableD3D *pointGS = nullptr;
-    if (usesGeometryShader(GL_POINTS))
-    {
-        getGeometryExecutableForPrimitiveType(data, GL_POINTS, &pointGS, &infoLog);
-    }
+LinkResult ProgramD3D::compileProgramExecutables(const gl::ContextState &contextState,
+                                                 gl::InfoLog &infoLog)
+{
+    // Ensure the compiler is initialized to avoid race conditions.
+    ANGLE_TRY(mRenderer->ensureHLSLCompilerInitialized());
+
+    WorkerThreadPool *workerPool = mRenderer->getWorkerThreadPool();
+
+    GetVertexExecutableTask vertexTask(this);
+    GetPixelExecutableTask pixelTask(this);
+    GetGeometryExecutableTask geometryTask(this, contextState);
+
+    std::array<WaitableEvent, 3> waitEvents = {{workerPool->postWorkerTask(&vertexTask),
+                                                workerPool->postWorkerTask(&pixelTask),
+                                                workerPool->postWorkerTask(&geometryTask)}};
+
+    WaitableEvent::WaitMany(&waitEvents);
+
+    infoLog << vertexTask.getInfoLog().str();
+    infoLog << pixelTask.getInfoLog().str();
+    infoLog << geometryTask.getInfoLog().str();
+
+    ANGLE_TRY(vertexTask.getError());
+    ANGLE_TRY(pixelTask.getError());
+    ANGLE_TRY(geometryTask.getError());
+
+    ShaderExecutableD3D *defaultVertexExecutable = vertexTask.getResult();
+    ShaderExecutableD3D *defaultPixelExecutable  = pixelTask.getResult();
+    ShaderExecutableD3D *pointGS                 = geometryTask.getResult();
 
     const ShaderD3D *vertexShaderD3D = GetImplAs<ShaderD3D>(mState.getAttachedVertexShader());
 
     if (usesGeometryShader(GL_POINTS) && pointGS)
     {
         // Geometry shaders are currently only used internally, so there is no corresponding shader
         // object at the interface level. For now the geometry shader debug info is prepended to
         // the vertex shader.
@@ -1347,28 +1485,28 @@ LinkResult ProgramD3D::link(const gl::Co
         }
     }
 
     std::vector<PackedVarying> packedVaryings =
         MergeVaryings(*vertexShader, *fragmentShader, mState.getTransformFeedbackVaryingNames());
 
     // Map the varyings to the register file
     VaryingPacking varyingPacking(data.getCaps().maxVaryingVectors);
-    if (!varyingPacking.packVaryings(infoLog, packedVaryings,
-                                     mState.getTransformFeedbackVaryingNames()))
+    if (!varyingPacking.packUserVaryings(infoLog, packedVaryings,
+                                         mState.getTransformFeedbackVaryingNames()))
     {
         return false;
     }
 
     ProgramD3DMetadata metadata(mRenderer, vertexShaderD3D, fragmentShaderD3D);
 
-    varyingPacking.enableBuiltins(SHADER_VERTEX, metadata);
-    varyingPacking.enableBuiltins(SHADER_PIXEL, metadata);
+    metadata.updatePackingBuiltins(SHADER_VERTEX, &varyingPacking);
+    metadata.updatePackingBuiltins(SHADER_PIXEL, &varyingPacking);
 
-    if (static_cast<GLuint>(varyingPacking.getRegisterCount()) > data.getCaps().maxVaryingVectors)
+    if (!varyingPacking.validateBuiltins())
     {
         infoLog << "No varying registers left to support gl_FragCoord/gl_PointCoord";
         return false;
     }
 
     // TODO(jmadill): Implement more sophisticated component packing in D3D9.
     // We can fail here because we use one semantic per GLSL varying. D3D11 can pack varyings
     // intelligently, but D3D9 assumes one semantic per register.
@@ -1397,17 +1535,17 @@ LinkResult ProgramD3D::link(const gl::Co
         {
             mUsesFlatInterpolation = true;
             break;
         }
     }
 
     if (mRenderer->getMajorShaderModel() >= 4)
     {
-        varyingPacking.enableBuiltins(SHADER_GEOMETRY, metadata);
+        metadata.updatePackingBuiltins(SHADER_GEOMETRY, &varyingPacking);
         mGeometryShaderPreamble = mDynamicHLSL->generateGeometryShaderPreamble(varyingPacking);
     }
 
     initAttribLocationsToD3DSemantic();
 
     defineUniformsAndAssignRegisters();
 
     gatherTransformFeedbackVaryings(varyingPacking);
@@ -1523,21 +1661,17 @@ void ProgramD3D::initializeUniformStorag
     mVertexUniformStorage   = mRenderer->createUniformStorage(vertexRegisters * 16u);
     mFragmentUniformStorage = mRenderer->createUniformStorage(fragmentRegisters * 16u);
 }
 
 gl::Error ProgramD3D::applyUniforms(GLenum drawMode)
 {
     ASSERT(!mDirtySamplerMapping);
 
-    gl::Error error = mRenderer->applyUniforms(*this, drawMode, mD3DUniforms);
-    if (error.isError())
-    {
-        return error;
-    }
+    ANGLE_TRY(mRenderer->applyUniforms(*this, drawMode, mD3DUniforms));
 
     for (D3DUniform *d3dUniform : mD3DUniforms)
     {
         d3dUniform->dirty = false;
     }
 
     return gl::Error(GL_NO_ERROR);
 }
@@ -2168,17 +2302,17 @@ void ProgramD3D::initAttribLocationsToD3
     }
 }
 
 void ProgramD3D::updateCachedInputLayout(const gl::State &state)
 {
     mCachedInputLayout.clear();
     const auto &vertexAttributes = state.getVertexArray()->getVertexAttributes();
 
-    for (unsigned int locationIndex : angle::IterateBitSet(mState.getActiveAttribLocationsMask()))
+    for (unsigned int locationIndex : IterateBitSet(mState.getActiveAttribLocationsMask()))
     {
         int d3dSemantic = mAttribLocationToD3DSemantic[locationIndex];
 
         if (d3dSemantic != -1)
         {
             if (mCachedInputLayout.size() < static_cast<size_t>(d3dSemantic + 1))
             {
                 mCachedInputLayout.resize(d3dSemantic + 1, gl::VERTEX_FORMAT_INVALID);
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
@@ -114,16 +114,19 @@ class ProgramD3DMetadata final : angle::
     bool usesViewScale() const;
     bool addsPointCoordToVertexShader() const;
     bool usesTransformFeedbackGLPosition() const;
     bool usesSystemValuePointSize() const;
     bool usesMultipleFragmentOuts() const;
     GLint getMajorShaderVersion() const;
     const ShaderD3D *getFragmentShader() const;
 
+    // Applies the metadata structure to the varying packing.
+    void updatePackingBuiltins(ShaderType shaderType, VaryingPacking *packing);
+
   private:
     const int mRendererMajorShaderModel;
     const std::string mShaderModelSuffix;
     const bool mUsesInstancedPointSpriteEmulation;
     const bool mUsesViewScale;
     const ShaderD3D *mVertexShader;
     const ShaderD3D *mFragmentShader;
 };
@@ -243,16 +246,22 @@ class ProgramD3D : public ProgramImpl
     }
 
     void updateCachedInputLayout(const gl::State &state);
     const gl::InputLayout &getCachedInputLayout() const { return mCachedInputLayout; }
 
     bool isSamplerMappingDirty() { return mDirtySamplerMapping; }
 
   private:
+    // These forward-declared tasks are used for multi-thread shader compiles.
+    class GetExecutableTask;
+    class GetVertexExecutableTask;
+    class GetPixelExecutableTask;
+    class GetGeometryExecutableTask;
+
     class VertexExecutable
     {
       public:
         enum HLSLAttribType
         {
             FLOAT,
             UNSIGNED_INT,
             SIGNED_INT,
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
@@ -30,17 +30,18 @@ namespace rx
 {
 
 RendererD3D::RendererD3D(egl::Display *display)
     : mDisplay(display),
       mPresentPathFastEnabled(false),
       mCapsInitialized(false),
       mWorkaroundsInitialized(false),
       mDisjoint(false),
-      mDeviceLost(false)
+      mDeviceLost(false),
+      mWorkerThreadPool(4)
 {
 }
 
 RendererD3D::~RendererD3D()
 {
     cleanup();
 }
 
@@ -364,9 +365,14 @@ const gl::Extensions &RendererD3D::getNa
 }
 
 const gl::Limitations &RendererD3D::getNativeLimitations() const
 {
     ensureCapsInitialized();
     return mNativeLimitations;
 }
 
+angle::WorkerThreadPool *RendererD3D::getWorkerThreadPool()
+{
+    return &mWorkerThreadPool;
+}
+
 }  // namespace rx
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/RendererD3D.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/RendererD3D.h
@@ -4,28 +4,29 @@
 // found in the LICENSE file.
 //
 
 // RendererD3D.h: Defines a back-end specific class for the DirectX renderer.
 
 #ifndef LIBANGLE_RENDERER_D3D_RENDERERD3D_H_
 #define LIBANGLE_RENDERER_D3D_RENDERERD3D_H_
 
+#include <array>
+
 #include "common/debug.h"
 #include "common/MemoryBuffer.h"
 #include "libANGLE/ContextState.h"
 #include "libANGLE/Device.h"
 #include "libANGLE/formatutils.h"
 #include "libANGLE/renderer/d3d/VertexDataManager.h"
+#include "libANGLE/renderer/d3d/WorkaroundsD3D.h"
+#include "libANGLE/renderer/d3d/hlsl/hlsl_utils.h"
 #include "libANGLE/renderer/d3d/formatutilsD3D.h"
-#include "libANGLE/renderer/d3d/WorkaroundsD3D.h"
 #include "libANGLE/Version.h"
-
-//FIXME(jmadill): std::array is currently prohibited by Chromium style guide
-#include <array>
+#include "libANGLE/WorkerThread.h"
 
 namespace egl
 {
 class ConfigSet;
 }
 
 namespace gl
 {
@@ -50,24 +51,16 @@ class ProgramD3D;
 class RenderTargetD3D;
 class ShaderExecutableD3D;
 class SwapChainD3D;
 class TextureStorage;
 struct TranslatedIndexData;
 class UniformStorageD3D;
 class VertexBuffer;
 
-enum ShaderType
-{
-    SHADER_VERTEX,
-    SHADER_PIXEL,
-    SHADER_GEOMETRY,
-    SHADER_TYPE_MAX
-};
-
 struct DeviceIdentifier
 {
     UINT VendorId;
     UINT DeviceId;
     UINT SubSysId;
     UINT Revision;
     UINT FeatureLevel;
 };
@@ -195,16 +188,18 @@ class RendererD3D : public BufferFactory
                                      ShaderExecutableD3D **outExecutable) = 0;
     virtual gl::Error compileToExecutable(gl::InfoLog &infoLog,
                                           const std::string &shaderHLSL,
                                           ShaderType type,
                                           const std::vector<D3DVarying> &streamOutVaryings,
                                           bool separatedOutputBuffers,
                                           const D3DCompilerWorkarounds &workarounds,
                                           ShaderExecutableD3D **outExectuable) = 0;
+    virtual gl::Error ensureHLSLCompilerInitialized()                          = 0;
+
     virtual UniformStorageD3D *createUniformStorage(size_t storageSize) = 0;
 
     // Image operations
     virtual ImageD3D *createImage() = 0;
     virtual gl::Error generateMipmap(ImageD3D *dest, ImageD3D *source) = 0;
     virtual gl::Error generateMipmapUsingD3D(TextureStorage *storage,
                                              const gl::TextureState &textureState) = 0;
     virtual TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain) = 0;
@@ -255,16 +250,18 @@ class RendererD3D : public BufferFactory
     const gl::Extensions &getNativeExtensions() const;
     const gl::Limitations &getNativeLimitations() const;
 
     // Necessary hack for default framebuffers in D3D.
     virtual FramebufferImpl *createDefaultFramebuffer(const gl::FramebufferState &state) = 0;
 
     virtual gl::Version getMaxSupportedESVersion() const = 0;
 
+    angle::WorkerThreadPool *getWorkerThreadPool();
+
   protected:
     virtual bool getLUID(LUID *adapterLuid) const = 0;
     virtual void generateCaps(gl::Caps *outCaps,
                               gl::TextureCapsMap *outTextureCaps,
                               gl::Extensions *outExtensions,
                               gl::Limitations *outLimitations) const = 0;
 
     void cleanup();
@@ -305,13 +302,15 @@ class RendererD3D : public BufferFactory
 
     gl::TextureMap mIncompleteTextures;
 
     mutable bool mWorkaroundsInitialized;
     mutable WorkaroundsD3D mWorkarounds;
 
     bool mDisjoint;
     bool mDeviceLost;
+
+    angle::WorkerThreadPool mWorkerThreadPool;
 };
 
 }  // namespace rx
 
 #endif // LIBANGLE_RENDERER_D3D_RENDERERD3D_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/TextureD3D.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/TextureD3D.cpp
@@ -2361,25 +2361,25 @@ gl::Error TextureD3D_2DArray::setImage(G
                                        const gl::Extents &size,
                                        GLenum format,
                                        GLenum type,
                                        const gl::PixelUnpackState &unpack,
                                        const uint8_t *pixels)
 {
     ASSERT(target == GL_TEXTURE_2D_ARRAY);
 
+    GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalFormat, type);
+
     GLint level = static_cast<GLint>(imageLevel);
-    GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalFormat, type);
     redefineImage(level, sizedInternalFormat, size);
 
-    const auto sizedInputFormat = gl::GetSizedInternalFormat(format, type);
-    const gl::InternalFormat &inputFormat = gl::GetInternalFormatInfo(sizedInputFormat);
-    GLsizei inputDepthPitch               = 0;
-    ANGLE_TRY_RESULT(inputFormat.computeDepthPitch(size.width, size.height, unpack.alignment,
-                                                   unpack.rowLength, unpack.imageHeight),
+    const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(sizedInternalFormat);
+    GLsizei inputDepthPitch              = 0;
+    ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(type, size.width, size.height, unpack.alignment,
+                                                  unpack.rowLength, unpack.imageHeight),
                      inputDepthPitch);
 
     for (int i = 0; i < size.depth; i++)
     {
         const ptrdiff_t layerOffset = (inputDepthPitch * i);
         gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, i);
         ANGLE_TRY(setImageImpl(index, type, unpack, pixels, layerOffset));
     }
@@ -2391,22 +2391,21 @@ gl::Error TextureD3D_2DArray::setSubImag
                                           size_t imageLevel,
                                           const gl::Box &area,
                                           GLenum format,
                                           GLenum type,
                                           const gl::PixelUnpackState &unpack,
                                           const uint8_t *pixels)
 {
     ASSERT(target == GL_TEXTURE_2D_ARRAY);
-    GLint level                           = static_cast<GLint>(imageLevel);
-    const auto sizedInputFormat = gl::GetSizedInternalFormat(format, type);
-    const gl::InternalFormat &inputFormat = gl::GetInternalFormatInfo(sizedInputFormat);
-    GLsizei inputDepthPitch               = 0;
-    ANGLE_TRY_RESULT(inputFormat.computeDepthPitch(area.width, area.height, unpack.alignment,
-                                                   unpack.rowLength, unpack.imageHeight),
+    GLint level                          = static_cast<GLint>(imageLevel);
+    const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(getInternalFormat(level));
+    GLsizei inputDepthPitch              = 0;
+    ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(type, area.width, area.height, unpack.alignment,
+                                                  unpack.rowLength, unpack.imageHeight),
                      inputDepthPitch);
 
     for (int i = 0; i < area.depth; i++)
     {
         int layer = area.z + i;
         const ptrdiff_t layerOffset = (inputDepthPitch * i);
 
         gl::Box layerArea(area.x, area.y, 0, area.width, area.height, 1);
@@ -2431,17 +2430,17 @@ gl::Error TextureD3D_2DArray::setCompres
 
     GLint level = static_cast<GLint>(imageLevel);
     // compressed formats don't have separate sized internal formats-- we can just use the compressed format directly
     redefineImage(level, internalFormat, size);
 
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalFormat);
     GLsizei inputDepthPitch              = 0;
     ANGLE_TRY_RESULT(
-        formatInfo.computeDepthPitch(size.width, size.height, 1, 0, 0),
+        formatInfo.computeDepthPitch(GL_UNSIGNED_BYTE, size.width, size.height, 1, 0, 0),
         inputDepthPitch);
 
     for (int i = 0; i < size.depth; i++)
     {
         const ptrdiff_t layerOffset = (inputDepthPitch * i);
 
         gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, i);
         ANGLE_TRY(setCompressedImageImpl(index, unpack, pixels, layerOffset));
@@ -2453,17 +2452,17 @@ gl::Error TextureD3D_2DArray::setCompres
 gl::Error TextureD3D_2DArray::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
                                                     const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
 {
     ASSERT(target == GL_TEXTURE_2D_ARRAY);
 
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(format);
     GLsizei inputDepthPitch              = 0;
     ANGLE_TRY_RESULT(
-        formatInfo.computeDepthPitch(area.width, area.height, 1, 0, 0),
+        formatInfo.computeDepthPitch(GL_UNSIGNED_BYTE, area.width, area.height, 1, 0, 0),
         inputDepthPitch);
 
     for (int i = 0; i < area.depth; i++)
     {
         int layer = area.z + i;
         const ptrdiff_t layerOffset = (inputDepthPitch * i);
 
         gl::Box layerArea(area.x, area.y, 0, area.width, area.height, 1);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
deleted file mode 100755
--- a/gfx/angle/src/libANGLE/renderer/d3d/VaryingPacking.cpp
+++ /dev/null
@@ -1,405 +0,0 @@
-//
-// Copyright 2015 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.
-//
-// VaryingPacking:
-//   Class which describes a mapping from varyings to registers in D3D
-//   for linking between shader stages.
-//
-
-#include "libANGLE/renderer/d3d/VaryingPacking.h"
-
-#include "common/utilities.h"
-#include "compiler/translator/blocklayoutHLSL.h"
-#include "libANGLE/renderer/d3d/DynamicHLSL.h"
-#include "libANGLE/renderer/d3d/ProgramD3D.h"
-
-namespace rx
-{
-
-// Implementation of VaryingPacking::BuiltinVarying
-VaryingPacking::BuiltinVarying::BuiltinVarying() : enabled(false), index(0), systemValue(false)
-{
-}
-
-std::string VaryingPacking::BuiltinVarying::str() const
-{
-    return (systemValue ? semantic : (semantic + Str(index)));
-}
-
-void VaryingPacking::BuiltinVarying::enableSystem(const std::string &systemValueSemantic)
-{
-    enabled     = true;
-    semantic    = systemValueSemantic;
-    systemValue = true;
-}
-
-void VaryingPacking::BuiltinVarying::enable(const std::string &semanticVal, unsigned int indexVal)
-{
-    enabled  = true;
-    semantic = semanticVal;
-    index    = indexVal;
-}
-
-// Implementation of VaryingPacking
-VaryingPacking::VaryingPacking(GLuint maxVaryingVectors)
-    : mRegisterMap(maxVaryingVectors), mBuiltinInfo(SHADER_TYPE_MAX)
-{
-}
-
-// Packs varyings into generic varying registers, using the algorithm from
-// See [OpenGL ES Shading Language 1.00 rev. 17] appendix A section 7 page 111
-// Also [OpenGL ES Shading Language 3.00 rev. 4] Section 11 page 119
-// Returns false if unsuccessful.
-bool VaryingPacking::packVarying(const PackedVarying &packedVarying)
-{
-    unsigned int varyingRows    = 0;
-    unsigned int varyingColumns = 0;
-
-    const auto &varying = *packedVarying.varying;
-
-    // "Non - square matrices of type matCxR consume the same space as a square matrix of type matN
-    // where N is the greater of C and R.Variables of type mat2 occupies 2 complete rows."
-    // Here we are a bit more conservative and allow packing non-square matrices more tightly.
-    // Make sure we use transposed matrix types to count registers correctly.
-    ASSERT(!varying.isStruct());
-    GLenum transposedType = gl::TransposeMatrixType(varying.type);
-    varyingRows           = gl::VariableRowCount(transposedType);
-    varyingColumns        = gl::VariableColumnCount(transposedType);
-
-    // "Arrays of size N are assumed to take N times the size of the base type"
-    varyingRows *= varying.elementCount();
-
-    unsigned int maxVaryingVectors = static_cast<unsigned int>(mRegisterMap.size());
-
-    if (varyingRows > maxVaryingVectors) {
-        return false;
-    }
-
-    // "For 2, 3 and 4 component variables packing is started using the 1st column of the 1st row.
-    // Variables are then allocated to successive rows, aligning them to the 1st column."
-    if (varyingColumns >= 2 && varyingColumns <= 4)
-    {
-        for (unsigned int row = 0; row <= maxVaryingVectors - varyingRows; ++row)
-        {
-            if (isFree(row, 0, varyingRows, varyingColumns))
-            {
-                insert(row, 0, packedVarying);
-                return true;
-            }
-        }
-
-        // "For 2 component variables, when there are no spare rows, the strategy is switched to
-        // using the highest numbered row and the lowest numbered column where the variable will
-        // fit."
-        if (varyingColumns == 2)
-        {
-            for (unsigned int r = maxVaryingVectors - varyingRows + 1; r-- >= 1;)
-            {
-                if (isFree(r, 2, varyingRows, 2))
-                {
-                    insert(r, 2, packedVarying);
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    // "1 component variables have their own packing rule. They are packed in order of size, largest
-    // first. Each variable is placed in the column that leaves the least amount of space in the
-    // column and aligned to the lowest available rows within that column."
-    ASSERT(varyingColumns == 1);
-    unsigned int contiguousSpace[4]     = {0};
-    unsigned int bestContiguousSpace[4] = {0};
-    unsigned int totalSpace[4]          = {0};
-
-    for (unsigned int row = 0; row < maxVaryingVectors; ++row)
-    {
-        for (unsigned int column = 0; column < 4; ++column)
-        {
-            if (mRegisterMap[row][column])
-            {
-                contiguousSpace[column] = 0;
-            }
-            else
-            {
-                contiguousSpace[column]++;
-                totalSpace[column]++;
-
-                if (contiguousSpace[column] > bestContiguousSpace[column])
-                {
-                    bestContiguousSpace[column] = contiguousSpace[column];
-                }
-            }
-        }
-    }
-
-    unsigned int bestColumn = 0;
-    for (unsigned int column = 1; column < 4; ++column)
-    {
-        if (bestContiguousSpace[column] >= varyingRows &&
-            (bestContiguousSpace[bestColumn] < varyingRows ||
-             totalSpace[column] < totalSpace[bestColumn]))
-        {
-            bestColumn = column;
-        }
-    }
-
-    if (bestContiguousSpace[bestColumn] >= varyingRows)
-    {
-        for (unsigned int row = 0; row < maxVaryingVectors; row++)
-        {
-            if (isFree(row, bestColumn, varyingRows, 1))
-            {
-                for (unsigned int arrayIndex = 0; arrayIndex < varyingRows; ++arrayIndex)
-                {
-                    // If varyingRows > 1, it must be an array.
-                    PackedVaryingRegister registerInfo;
-                    registerInfo.packedVarying     = &packedVarying;
-                    registerInfo.registerRow       = row + arrayIndex;
-                    registerInfo.registerColumn    = bestColumn;
-                    registerInfo.varyingArrayIndex = arrayIndex;
-                    registerInfo.varyingRowIndex = 0;
-                    mRegisterList.push_back(registerInfo);
-                    mRegisterMap[row + arrayIndex][bestColumn] = true;
-                }
-                break;
-            }
-        }
-        return true;
-    }
-
-    return false;
-}
-
-bool VaryingPacking::isFree(unsigned int registerRow,
-                            unsigned int registerColumn,
-                            unsigned int varyingRows,
-                            unsigned int varyingColumns) const
-{
-    for (unsigned int row = 0; row < varyingRows; ++row)
-    {
-        ASSERT(registerRow + row < mRegisterMap.size());
-        for (unsigned int column = 0; column < varyingColumns; ++column)
-        {
-            ASSERT(registerColumn + column < 4);
-            if (mRegisterMap[registerRow + row][registerColumn + column])
-            {
-                return false;
-            }
-        }
-    }
-
-    return true;
-}
-
-void VaryingPacking::insert(unsigned int registerRow,
-                            unsigned int registerColumn,
-                            const PackedVarying &packedVarying)
-{
-    unsigned int varyingRows    = 0;
-    unsigned int varyingColumns = 0;
-
-    const auto &varying = *packedVarying.varying;
-    ASSERT(!varying.isStruct());
-    GLenum transposedType = gl::TransposeMatrixType(varying.type);
-    varyingRows           = gl::VariableRowCount(transposedType);
-    varyingColumns        = gl::VariableColumnCount(transposedType);
-
-    PackedVaryingRegister registerInfo;
-    registerInfo.packedVarying  = &packedVarying;
-    registerInfo.registerColumn = registerColumn;
-
-    for (unsigned int arrayElement = 0; arrayElement < varying.elementCount(); ++arrayElement)
-    {
-        for (unsigned int varyingRow = 0; varyingRow < varyingRows; ++varyingRow)
-        {
-            registerInfo.registerRow       = registerRow + (arrayElement * varyingRows) + varyingRow;
-            registerInfo.varyingRowIndex   = varyingRow;
-            registerInfo.varyingArrayIndex = arrayElement;
-            mRegisterList.push_back(registerInfo);
-
-            for (unsigned int columnIndex = 0; columnIndex < varyingColumns; ++columnIndex)
-            {
-                mRegisterMap[registerInfo.registerRow][registerColumn + columnIndex] = true;
-            }
-        }
-    }
-}
-
-// See comment on packVarying.
-bool VaryingPacking::packVaryings(gl::InfoLog &infoLog,
-                                  const std::vector<PackedVarying> &packedVaryings,
-                                  const std::vector<std::string> &transformFeedbackVaryings)
-{
-    std::set<std::string> uniqueVaryingNames;
-
-    // "Variables are packed into the registers one at a time so that they each occupy a contiguous
-    // subrectangle. No splitting of variables is permitted."
-    for (const PackedVarying &packedVarying : packedVaryings)
-    {
-        const auto &varying = *packedVarying.varying;
-
-        // Do not assign registers to built-in or unreferenced varyings
-        if (varying.isBuiltIn() || (!varying.staticUse && !packedVarying.isStructField()))
-        {
-            continue;
-        }
-
-        ASSERT(!varying.isStruct());
-        ASSERT(uniqueVaryingNames.count(varying.name) == 0);
-
-        if (packVarying(packedVarying))
-        {
-            uniqueVaryingNames.insert(varying.name);
-        }
-        else
-        {
-            infoLog << "Could not pack varying " << varying.name;
-            return false;
-        }
-    }
-
-    for (const std::string &transformFeedbackVaryingName : transformFeedbackVaryings)
-    {
-        if (transformFeedbackVaryingName.compare(0, 3, "gl_") == 0)
-        {
-            // do not pack builtin XFB varyings
-            continue;
-        }
-
-        bool found = false;
-        for (const PackedVarying &packedVarying : packedVaryings)
-        {
-            const auto &varying = *packedVarying.varying;
-
-            // Make sure transform feedback varyings aren't optimized out.
-            if (uniqueVaryingNames.count(transformFeedbackVaryingName) > 0)
-            {
-                found = true;
-                break;
-            }
-
-            if (transformFeedbackVaryingName == varying.name)
-            {
-                if (!packVarying(packedVarying))
-                {
-                    infoLog << "Could not pack varying " << varying.name;
-                    return false;
-                }
-
-                found = true;
-                break;
-            }
-        }
-
-        if (!found)
-        {
-            infoLog << "Transform feedback varying " << transformFeedbackVaryingName
-                    << " does not exist in the vertex shader.";
-            return false;
-        }
-    }
-
-    // Sort the packed register list
-    std::sort(mRegisterList.begin(), mRegisterList.end());
-
-    // Assign semantic indices
-    for (unsigned int semanticIndex = 0;
-         semanticIndex < static_cast<unsigned int>(mRegisterList.size()); ++semanticIndex)
-    {
-        mRegisterList[semanticIndex].semanticIndex = semanticIndex;
-    }
-
-    return true;
-}
-
-unsigned int VaryingPacking::getRegisterCount() const
-{
-    unsigned int count = 0;
-
-    for (const Register &reg : mRegisterMap)
-    {
-        if (reg.data[0] || reg.data[1] || reg.data[2] || reg.data[3])
-        {
-            ++count;
-        }
-    }
-
-    if (mBuiltinInfo[SHADER_PIXEL].glFragCoord.enabled)
-    {
-        ++count;
-    }
-
-    if (mBuiltinInfo[SHADER_PIXEL].glPointCoord.enabled)
-    {
-        ++count;
-    }
-
-    return count;
-}
-
-void VaryingPacking::enableBuiltins(ShaderType shaderType,
-                                    const ProgramD3DMetadata &programMetadata)
-{
-    int majorShaderModel = programMetadata.getRendererMajorShaderModel();
-    bool position        = programMetadata.usesTransformFeedbackGLPosition();
-    bool fragCoord       = programMetadata.usesFragCoord();
-    bool pointCoord = shaderType == SHADER_VERTEX ? programMetadata.addsPointCoordToVertexShader()
-                                                  : programMetadata.usesPointCoord();
-    bool pointSize                  = programMetadata.usesSystemValuePointSize();
-    bool hlsl4                      = (majorShaderModel >= 4);
-    const std::string &userSemantic = GetVaryingSemantic(majorShaderModel, pointSize);
-
-    unsigned int reservedSemanticIndex = getMaxSemanticIndex();
-
-    BuiltinInfo *builtins = &mBuiltinInfo[shaderType];
-
-    if (hlsl4)
-    {
-        builtins->dxPosition.enableSystem("SV_Position");
-    }
-    else if (shaderType == SHADER_PIXEL)
-    {
-        builtins->dxPosition.enableSystem("VPOS");
-    }
-    else
-    {
-        builtins->dxPosition.enableSystem("POSITION");
-    }
-
-    if (position)
-    {
-        builtins->glPosition.enable(userSemantic, reservedSemanticIndex++);
-    }
-
-    if (fragCoord)
-    {
-        builtins->glFragCoord.enable(userSemantic, reservedSemanticIndex++);
-    }
-
-    if (pointCoord)
-    {
-        // SM3 reserves the TEXCOORD semantic for point sprite texcoords (gl_PointCoord)
-        // In D3D11 we manually compute gl_PointCoord in the GS.
-        if (hlsl4)
-        {
-            builtins->glPointCoord.enable(userSemantic, reservedSemanticIndex++);
-        }
-        else
-        {
-            builtins->glPointCoord.enable("TEXCOORD", 0);
-        }
-    }
-
-    // Special case: do not include PSIZE semantic in HLSL 3 pixel shaders
-    if (pointSize && (shaderType != SHADER_PIXEL || hlsl4))
-    {
-        builtins->glPointSize.enableSystem("PSIZE");
-    }
-}
-
-}  // namespace rx
deleted file mode 100755
--- a/gfx/angle/src/libANGLE/renderer/d3d/VaryingPacking.h
+++ /dev/null
@@ -1,175 +0,0 @@
-//
-// Copyright 2015 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.
-//
-// VaryingPacking:
-//   Class which describes a mapping from varyings to registers in D3D
-//   for linking between shader stages.
-//
-
-#ifndef LIBANGLE_RENDERER_D3D_VARYINGPACKING_H_
-#define LIBANGLE_RENDERER_D3D_VARYINGPACKING_H_
-
-#include "libANGLE/renderer/d3d/RendererD3D.h"
-
-namespace rx
-{
-class ProgramD3DMetadata;
-
-struct PackedVarying
-{
-    PackedVarying(const sh::ShaderVariable &varyingIn, sh::InterpolationType interpolationIn)
-        : varying(&varyingIn), vertexOnly(false), interpolation(interpolationIn)
-    {
-    }
-    PackedVarying(const sh::ShaderVariable &varyingIn,
-                  sh::InterpolationType interpolationIn,
-                  const std::string &parentStructNameIn)
-        : varying(&varyingIn),
-          vertexOnly(false),
-          interpolation(interpolationIn),
-          parentStructName(parentStructNameIn)
-    {
-    }
-
-    bool isStructField() const { return !parentStructName.empty(); }
-
-    const sh::ShaderVariable *varying;
-
-    // Transform feedback varyings can be only referenced in the VS.
-    bool vertexOnly;
-
-    // Cached so we can store sh::ShaderVariable to point to varying fields.
-    sh::InterpolationType interpolation;
-
-    // Struct name
-    std::string parentStructName;
-};
-
-struct PackedVaryingRegister final
-{
-    PackedVaryingRegister()
-        : packedVarying(nullptr),
-          varyingArrayIndex(0),
-          varyingRowIndex(0),
-          registerRow(0),
-          registerColumn(0)
-    {
-    }
-
-    PackedVaryingRegister(const PackedVaryingRegister &) = default;
-    PackedVaryingRegister &operator=(const PackedVaryingRegister &) = default;
-
-    bool operator<(const PackedVaryingRegister &other) const
-    {
-        return sortOrder() < other.sortOrder();
-    }
-
-    unsigned int sortOrder() const
-    {
-        // TODO(jmadill): Handle interpolation types
-        return registerRow * 4 + registerColumn;
-    }
-
-    bool isStructField() const { return !structFieldName.empty(); }
-
-    // Index to the array of varyings.
-    const PackedVarying *packedVarying;
-
-    // The array element of the packed varying.
-    unsigned int varyingArrayIndex;
-
-    // The row of the array element of the packed varying.
-    unsigned int varyingRowIndex;
-
-    // The register row to which we've assigned this packed varying.
-    unsigned int registerRow;
-
-    // The column of the register row into which we've packed this varying.
-    unsigned int registerColumn;
-
-    // Assigned after packing
-    unsigned int semanticIndex;
-
-    // Struct member this varying corresponds to.
-    std::string structFieldName;
-};
-
-class VaryingPacking final : angle::NonCopyable
-{
-  public:
-    VaryingPacking(GLuint maxVaryingVectors);
-
-    bool packVaryings(gl::InfoLog &infoLog,
-                      const std::vector<PackedVarying> &packedVaryings,
-                      const std::vector<std::string> &transformFeedbackVaryings);
-
-    struct Register
-    {
-        Register() { data[0] = data[1] = data[2] = data[3] = false; }
-
-        bool &operator[](unsigned int index) { return data[index]; }
-        bool operator[](unsigned int index) const { return data[index]; }
-
-        bool data[4];
-    };
-
-    Register &operator[](unsigned int index) { return mRegisterMap[index]; }
-    const Register &operator[](unsigned int index) const { return mRegisterMap[index]; }
-
-    const std::vector<PackedVaryingRegister> &getRegisterList() const { return mRegisterList; }
-    unsigned int getMaxSemanticIndex() const
-    {
-        return static_cast<unsigned int>(mRegisterList.size());
-    }
-    unsigned int getRegisterCount() const;
-
-    void enableBuiltins(ShaderType shaderType, const ProgramD3DMetadata &programMetadata);
-
-    struct BuiltinVarying final : angle::NonCopyable
-    {
-        BuiltinVarying();
-
-        std::string str() const;
-        void enableSystem(const std::string &systemValueSemantic);
-        void enable(const std::string &semanticVal, unsigned int indexVal);
-
-        bool enabled;
-        std::string semantic;
-        unsigned int index;
-        bool systemValue;
-    };
-
-    struct BuiltinInfo
-    {
-        BuiltinVarying dxPosition;
-        BuiltinVarying glPosition;
-        BuiltinVarying glFragCoord;
-        BuiltinVarying glPointCoord;
-        BuiltinVarying glPointSize;
-    };
-
-    const BuiltinInfo &builtins(ShaderType shaderType) const { return mBuiltinInfo[shaderType]; }
-
-    bool usesPointSize() const { return mBuiltinInfo[SHADER_VERTEX].glPointSize.enabled; }
-
-  private:
-    bool packVarying(const PackedVarying &packedVarying);
-    bool isFree(unsigned int registerRow,
-                unsigned int registerColumn,
-                unsigned int varyingRows,
-                unsigned int varyingColumns) const;
-    void insert(unsigned int registerRow,
-                unsigned int registerColumn,
-                const PackedVarying &packedVarying);
-
-    std::vector<Register> mRegisterMap;
-    std::vector<PackedVaryingRegister> mRegisterList;
-
-    std::vector<BuiltinInfo> mBuiltinInfo;
-};
-
-}  // namespace rx
-
-#endif  // LIBANGLE_RENDERER_D3D_VARYINGPACKING_H_
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/VaryingPacking_unittest.cpp
@@ -0,0 +1,178 @@
+//
+// Copyright 2016 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.
+//
+// VaryingPacking_unittest.cpp:
+//   Tests for ANGLE's internal varying packing algorithm.
+//
+
+#include "libANGLE/renderer/d3d/hlsl/VaryingPacking.h"
+
+#include <gtest/gtest.h>
+
+#include "libANGLE/Program.h"
+
+namespace
+{
+
+class VaryingPackingTest : public ::testing::TestWithParam<GLuint>
+{
+  protected:
+    VaryingPackingTest() {}
+
+    bool testVaryingPacking(const std::vector<sh::Varying> &shVaryings,
+                            rx::VaryingPacking *varyingPacking)
+    {
+        std::vector<rx::PackedVarying> packedVaryings;
+        for (const auto &shVarying : shVaryings)
+        {
+            packedVaryings.push_back(rx::PackedVarying(shVarying, shVarying.interpolation));
+        }
+
+        gl::InfoLog infoLog;
+        std::vector<std::string> transformFeedbackVaryings;
+
+        if (!varyingPacking->packUserVaryings(infoLog, packedVaryings, transformFeedbackVaryings))
+            return false;
+
+        return varyingPacking->validateBuiltins();
+    }
+
+    bool packVaryings(GLuint maxVaryings, const std::vector<sh::Varying> &shVaryings)
+    {
+        rx::VaryingPacking varyingPacking(maxVaryings);
+        return testVaryingPacking(shVaryings, &varyingPacking);
+    }
+
+    const int kMaxVaryings = GetParam();
+};
+
+std::vector<sh::Varying> MakeVaryings(GLenum type, size_t count, size_t arraySize)
+{
+    std::vector<sh::Varying> varyings;
+
+    for (size_t index = 0; index < count; ++index)
+    {
+        std::stringstream strstr;
+        strstr << type << index;
+
+        sh::Varying varying;
+        varying.type          = type;
+        varying.precision     = GL_MEDIUM_FLOAT;
+        varying.name          = strstr.str();
+        varying.mappedName    = strstr.str();
+        varying.arraySize     = static_cast<unsigned int>(arraySize);
+        varying.staticUse     = true;
+        varying.interpolation = sh::INTERPOLATION_FLAT;
+        varying.isInvariant   = false;
+
+        varyings.push_back(varying);
+    }
+
+    return varyings;
+}
+
+void AddVaryings(std::vector<sh::Varying> *varyings, GLenum type, size_t count, size_t arraySize)
+{
+    const auto &newVaryings = MakeVaryings(type, count, arraySize);
+    varyings->insert(varyings->end(), newVaryings.begin(), newVaryings.end());
+}
+
+// Test that a single varying can't overflow the packing.
+TEST_P(VaryingPackingTest, OneVaryingLargerThanMax)
+{
+    ASSERT_FALSE(packVaryings(1, MakeVaryings(GL_FLOAT_MAT4, 1, 0)));
+}
+
+// Tests that using FragCoord as a user varying will eat up a register.
+TEST_P(VaryingPackingTest, MaxVaryingVec4PlusFragCoord)
+{
+    const std::string &userSemantic = rx::GetVaryingSemantic(4, false);
+
+    rx::VaryingPacking varyingPacking(kMaxVaryings);
+    unsigned int reservedSemanticIndex = varyingPacking.getMaxSemanticIndex();
+
+    varyingPacking.builtins(rx::SHADER_PIXEL)
+        .glFragCoord.enable(userSemantic, reservedSemanticIndex);
+
+    const auto &varyings = MakeVaryings(GL_FLOAT_VEC4, kMaxVaryings, 0);
+
+    ASSERT_FALSE(testVaryingPacking(varyings, &varyingPacking));
+}
+
+// Tests that using PointCoord as a user varying will eat up a register.
+TEST_P(VaryingPackingTest, MaxVaryingVec4PlusPointCoord)
+{
+    const std::string &userSemantic = rx::GetVaryingSemantic(4, false);
+
+    rx::VaryingPacking varyingPacking(kMaxVaryings);
+    unsigned int reservedSemanticIndex = varyingPacking.getMaxSemanticIndex();
+
+    varyingPacking.builtins(rx::SHADER_PIXEL)
+        .glPointCoord.enable(userSemantic, reservedSemanticIndex);
+
+    const auto &varyings = MakeVaryings(GL_FLOAT_VEC4, kMaxVaryings, 0);
+
+    ASSERT_FALSE(testVaryingPacking(varyings, &varyingPacking));
+}
+
+// This will overflow the available varying space.
+TEST_P(VaryingPackingTest, MaxPlusOneVaryingVec3)
+{
+    ASSERT_FALSE(packVaryings(kMaxVaryings, MakeVaryings(GL_FLOAT_VEC3, kMaxVaryings + 1, 0)));
+}
+
+// This will overflow the available varying space.
+TEST_P(VaryingPackingTest, MaxPlusOneVaryingVec3Array)
+{
+    ASSERT_FALSE(packVaryings(kMaxVaryings, MakeVaryings(GL_FLOAT_VEC3, kMaxVaryings / 2 + 1, 2)));
+}
+
+// This will overflow the available varying space.
+TEST_P(VaryingPackingTest, MaxVaryingVec3AndOneVec2)
+{
+    std::vector<sh::Varying> varyings = MakeVaryings(GL_FLOAT_VEC3, kMaxVaryings, 0);
+    AddVaryings(&varyings, GL_FLOAT_VEC2, 1, 0);
+    ASSERT_FALSE(packVaryings(kMaxVaryings, varyings));
+}
+
+// This should work since two vec2s are packed in a single register.
+TEST_P(VaryingPackingTest, MaxPlusOneVaryingVec2)
+{
+    ASSERT_TRUE(packVaryings(kMaxVaryings, MakeVaryings(GL_FLOAT_VEC2, kMaxVaryings + 1, 0)));
+}
+
+// Same for this one as above.
+TEST_P(VaryingPackingTest, TwiceMaxVaryingVec2)
+{
+    ASSERT_TRUE(packVaryings(kMaxVaryings, MakeVaryings(GL_FLOAT_VEC2, kMaxVaryings * 2, 0)));
+}
+
+// This should not work since it overflows available varying space.
+TEST_P(VaryingPackingTest, TooManyVaryingVec2)
+{
+    ASSERT_FALSE(packVaryings(kMaxVaryings, MakeVaryings(GL_FLOAT_VEC2, kMaxVaryings * 2 + 1, 0)));
+}
+
+// This should work according to the example GL packing rules - the float varyings are slotted
+// into the end of the vec3 varying arrays.
+TEST_P(VaryingPackingTest, MaxVaryingVec3ArrayAndFloatArrays)
+{
+    std::vector<sh::Varying> varyings = MakeVaryings(GL_FLOAT_VEC3, kMaxVaryings / 2, 2);
+    AddVaryings(&varyings, GL_FLOAT, kMaxVaryings / 2, 2);
+    ASSERT_TRUE(packVaryings(kMaxVaryings, varyings));
+}
+
+// This should not work - it has one too many float arrays.
+TEST_P(VaryingPackingTest, MaxVaryingVec3ArrayAndMaxPlusOneFloatArray)
+{
+    std::vector<sh::Varying> varyings = MakeVaryings(GL_FLOAT_VEC3, kMaxVaryings / 2, 2);
+    AddVaryings(&varyings, GL_FLOAT, kMaxVaryings / 2 + 1, 2);
+    ASSERT_FALSE(packVaryings(kMaxVaryings, varyings));
+}
+
+// Makes separate tests for different values of kMaxVaryings.
+INSTANTIATE_TEST_CASE_P(, VaryingPackingTest, ::testing::Values(1, 4, 8));
+
+}  // anonymous namespace
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/WorkaroundsD3D.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/WorkaroundsD3D.h
@@ -90,19 +90,20 @@ struct WorkaroundsD3D
     // vertex shaders. To work around this bug, we translate -(int) into ~(int)+1.
     bool rewriteUnaryMinusOperator = false;
 
     // On some Intel drivers, using isnan() on highp float will get wrong answer. To work around
     // this bug, we use an expression to emulate function isnan(). Tracking bug:
     // https://crbug.com/650547
     bool emulateIsnanFloat = false;
 
-    // On some Intel drivers, using clear() may not take effect. To work around this bug, we call
-    // clear() twice on these platforms. Tracking bug: https://crbug.com/655534
-    bool callClearTwice = false;
+    // On some Intel drivers, using clear() may not take effect. One of such situation is to clear
+    // a target with width or height < 16. To work around this bug, we call clear() twice on these
+    // platforms. Tracking bug: https://crbug.com/655534
+    bool callClearTwiceOnSmallTarget = false;
 
     // On some Intel drivers, copying from staging storage to constant buffer storage does not
     // seem to work. Work around this by keeping system memory storage as a canonical reference
     // for buffer data.
     // D3D11-only workaround. See http://crbug.com/593024.
     bool useSystemMemoryForConstantBuffers = false;
 };
 
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp
@@ -584,35 +584,33 @@ Blit11::Blit11(Renderer11 *renderer)
                         "Blit11::mResolveStencilPS"),
       mStencilSRV(nullptr),
       mResolvedDepthStencilRTView(nullptr)
 {
 }
 
 Blit11::~Blit11()
 {
-    freeResources();
-
     mQuad2DIL.release();
     mQuad2DVS.release();
     mDepthPS.release();
 
     mQuad3DIL.release();
     mQuad3DVS.release();
     mQuad3DGS.release();
 
     clearShaderMap();
     releaseResolveDepthStencilResources();
 }
 
 gl::Error Blit11::initResources()
 {
     if (mResourcesInitialized)
     {
-        return gl::Error(GL_NO_ERROR);
+        return gl::NoError();
     }
 
     TRACE_EVENT0("gpu.angle", "Blit11::initResources");
 
     HRESULT result;
     ID3D11Device *device = mRenderer->getDevice();
 
     D3D11_BUFFER_DESC vbDesc;
@@ -621,23 +619,21 @@ gl::Error Blit11::initResources()
                                            sizeof(d3d11::PositionTexCoordVertex)) *
                                   6 * mRenderer->getNativeCaps().max3DTextureSize);
     vbDesc.Usage               = D3D11_USAGE_DYNAMIC;
     vbDesc.BindFlags           = D3D11_BIND_VERTEX_BUFFER;
     vbDesc.CPUAccessFlags      = D3D11_CPU_ACCESS_WRITE;
     vbDesc.MiscFlags           = 0;
     vbDesc.StructureByteStride = 0;
 
-    result = device->CreateBuffer(&vbDesc, nullptr, &mVertexBuffer);
+    result = device->CreateBuffer(&vbDesc, nullptr, mVertexBuffer.GetAddressOf());
     ASSERT(SUCCEEDED(result));
     if (FAILED(result))
     {
-        freeResources();
-        return gl::Error(GL_OUT_OF_MEMORY, "Failed to create blit vertex buffer, HRESULT: 0x%X",
-                         result);
+        return gl::OutOfMemory() << "Failed to create blit vertex buffer, " << result;
     }
     d3d11::SetDebugName(mVertexBuffer, "Blit11 vertex buffer");
 
     D3D11_SAMPLER_DESC pointSamplerDesc;
     pointSamplerDesc.Filter         = D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR;
     pointSamplerDesc.AddressU       = D3D11_TEXTURE_ADDRESS_CLAMP;
     pointSamplerDesc.AddressV       = D3D11_TEXTURE_ADDRESS_CLAMP;
     pointSamplerDesc.AddressW       = D3D11_TEXTURE_ADDRESS_CLAMP;
@@ -646,23 +642,21 @@ gl::Error Blit11::initResources()
     pointSamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
     pointSamplerDesc.BorderColor[0] = 0.0f;
     pointSamplerDesc.BorderColor[1] = 0.0f;
     pointSamplerDesc.BorderColor[2] = 0.0f;
     pointSamplerDesc.BorderColor[3] = 0.0f;
     pointSamplerDesc.MinLOD         = 0.0f;
     pointSamplerDesc.MaxLOD         = FLT_MAX;
 
-    result = device->CreateSamplerState(&pointSamplerDesc, &mPointSampler);
+    result = device->CreateSamplerState(&pointSamplerDesc, mPointSampler.GetAddressOf());
     ASSERT(SUCCEEDED(result));
     if (FAILED(result))
     {
-        freeResources();
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to create blit point sampler state, HRESULT: 0x%X", result);
+        return gl::OutOfMemory() << "Failed to create blit point sampler state, " << result;
     }
     d3d11::SetDebugName(mPointSampler, "Blit11 point sampler");
 
     D3D11_SAMPLER_DESC linearSamplerDesc;
     linearSamplerDesc.Filter         = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
     linearSamplerDesc.AddressU       = D3D11_TEXTURE_ADDRESS_CLAMP;
     linearSamplerDesc.AddressV       = D3D11_TEXTURE_ADDRESS_CLAMP;
     linearSamplerDesc.AddressW       = D3D11_TEXTURE_ADDRESS_CLAMP;
@@ -671,59 +665,54 @@ gl::Error Blit11::initResources()
     linearSamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
     linearSamplerDesc.BorderColor[0] = 0.0f;
     linearSamplerDesc.BorderColor[1] = 0.0f;
     linearSamplerDesc.BorderColor[2] = 0.0f;
     linearSamplerDesc.BorderColor[3] = 0.0f;
     linearSamplerDesc.MinLOD         = 0.0f;
     linearSamplerDesc.MaxLOD         = FLT_MAX;
 
-    result = device->CreateSamplerState(&linearSamplerDesc, &mLinearSampler);
+    result = device->CreateSamplerState(&linearSamplerDesc, mLinearSampler.GetAddressOf());
     ASSERT(SUCCEEDED(result));
     if (FAILED(result))
     {
-        freeResources();
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to create blit linear sampler state, HRESULT: 0x%X", result);
+        return gl::OutOfMemory() << "Failed to create blit linear sampler state, " << result;
     }
     d3d11::SetDebugName(mLinearSampler, "Blit11 linear sampler");
 
     // Use a rasterizer state that will not cull so that inverted quads will not be culled
     D3D11_RASTERIZER_DESC rasterDesc;
     rasterDesc.FillMode              = D3D11_FILL_SOLID;
     rasterDesc.CullMode              = D3D11_CULL_NONE;
     rasterDesc.FrontCounterClockwise = FALSE;
     rasterDesc.DepthBias             = 0;
     rasterDesc.SlopeScaledDepthBias  = 0.0f;
     rasterDesc.DepthBiasClamp        = 0.0f;
     rasterDesc.DepthClipEnable       = TRUE;
     rasterDesc.MultisampleEnable     = FALSE;
     rasterDesc.AntialiasedLineEnable = FALSE;
 
     rasterDesc.ScissorEnable = TRUE;
-    result = device->CreateRasterizerState(&rasterDesc, &mScissorEnabledRasterizerState);
+    result =
+        device->CreateRasterizerState(&rasterDesc, mScissorEnabledRasterizerState.GetAddressOf());
     ASSERT(SUCCEEDED(result));
     if (FAILED(result))
     {
-        freeResources();
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to create blit scissoring rasterizer state, HRESULT: 0x%X",
-                         result);
+        return gl::OutOfMemory() << "Failed to create blit scissoring rasterizer state, " << result;
     }
     d3d11::SetDebugName(mScissorEnabledRasterizerState, "Blit11 scissoring rasterizer state");
 
     rasterDesc.ScissorEnable = FALSE;
-    result = device->CreateRasterizerState(&rasterDesc, &mScissorDisabledRasterizerState);
+    result =
+        device->CreateRasterizerState(&rasterDesc, mScissorDisabledRasterizerState.GetAddressOf());
     ASSERT(SUCCEEDED(result));
     if (FAILED(result))
     {
-        freeResources();
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to create blit no scissoring rasterizer state, HRESULT: 0x%X",
-                         result);
+        return gl::OutOfMemory() << "Failed to create blit no scissoring rasterizer state, "
+                                 << result;
     }
     d3d11::SetDebugName(mScissorDisabledRasterizerState, "Blit11 no scissoring rasterizer state");
 
     D3D11_DEPTH_STENCIL_DESC depthStencilDesc;
     depthStencilDesc.DepthEnable                  = true;
     depthStencilDesc.DepthWriteMask               = D3D11_DEPTH_WRITE_MASK_ALL;
     depthStencilDesc.DepthFunc                    = D3D11_COMPARISON_ALWAYS;
     depthStencilDesc.StencilEnable                = FALSE;
@@ -733,60 +722,43 @@ gl::Error Blit11::initResources()
     depthStencilDesc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP;
     depthStencilDesc.FrontFace.StencilPassOp      = D3D11_STENCIL_OP_KEEP;
     depthStencilDesc.FrontFace.StencilFunc        = D3D11_COMPARISON_ALWAYS;
     depthStencilDesc.BackFace.StencilFailOp       = D3D11_STENCIL_OP_KEEP;
     depthStencilDesc.BackFace.StencilDepthFailOp  = D3D11_STENCIL_OP_KEEP;
     depthStencilDesc.BackFace.StencilPassOp       = D3D11_STENCIL_OP_KEEP;
     depthStencilDesc.BackFace.StencilFunc         = D3D11_COMPARISON_ALWAYS;
 
-    result = device->CreateDepthStencilState(&depthStencilDesc, &mDepthStencilState);
+    result = device->CreateDepthStencilState(&depthStencilDesc, mDepthStencilState.GetAddressOf());
     ASSERT(SUCCEEDED(result));
     if (FAILED(result))
     {
-        freeResources();
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to create blit depth stencil state, HRESULT: 0x%X", result);
+        return gl::OutOfMemory() << "Failed to create blit depth stencil state, " << result;
     }
     d3d11::SetDebugName(mDepthStencilState, "Blit11 depth stencil state");
 
     D3D11_BUFFER_DESC swizzleBufferDesc;
     swizzleBufferDesc.ByteWidth           = sizeof(unsigned int) * 4;
     swizzleBufferDesc.Usage               = D3D11_USAGE_DYNAMIC;
     swizzleBufferDesc.BindFlags           = D3D11_BIND_CONSTANT_BUFFER;
     swizzleBufferDesc.CPUAccessFlags      = D3D11_CPU_ACCESS_WRITE;
     swizzleBufferDesc.MiscFlags           = 0;
     swizzleBufferDesc.StructureByteStride = 0;
 
-    result = device->CreateBuffer(&swizzleBufferDesc, nullptr, &mSwizzleCB);
+    result = device->CreateBuffer(&swizzleBufferDesc, nullptr, mSwizzleCB.GetAddressOf());
     ASSERT(SUCCEEDED(result));
     if (FAILED(result))
     {
-        freeResources();
-        return gl::Error(GL_OUT_OF_MEMORY, "Failed to create blit swizzle buffer, HRESULT: 0x%X",
-                         result);
+        return gl::OutOfMemory() << "Failed to create blit swizzle buffer, " << result;
     }
     d3d11::SetDebugName(mSwizzleCB, "Blit11 swizzle constant buffer");
 
     mResourcesInitialized = true;
 
-    return gl::Error(GL_NO_ERROR);
-}
-
-void Blit11::freeResources()
-{
-    SafeRelease(mVertexBuffer);
-    SafeRelease(mPointSampler);
-    SafeRelease(mLinearSampler);
-    SafeRelease(mScissorEnabledRasterizerState);
-    SafeRelease(mScissorDisabledRasterizerState);
-    SafeRelease(mDepthStencilState);
-    SafeRelease(mSwizzleCB);
-
-    mResourcesInitialized = false;
+    return gl::NoError();
 }
 
 // static
 Blit11::BlitShaderType Blit11::GetBlitShaderType(GLenum destinationFormat,
                                                  bool isSigned,
                                                  bool unpackPremultiplyAlpha,
                                                  bool unpackUnmultiplyAlpha,
                                                  ShaderDimension dimension)
@@ -1059,64 +1031,62 @@ gl::Error Blit11::swizzleTexture(ID3D11S
             break;
     }
 
     const Shader *shader = nullptr;
     ANGLE_TRY(getSwizzleShader(shaderType, sourceSRVDesc.ViewDimension, &shader));
 
     // Set vertices
     D3D11_MAPPED_SUBRESOURCE mappedResource;
-    result = deviceContext->Map(mVertexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
+    result =
+        deviceContext->Map(mVertexBuffer.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
     if (FAILED(result))
     {
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to map internal vertex buffer for swizzle, HRESULT: 0x%X.",
-                         result);
+        return gl::OutOfMemory() << "Failed to map internal vertex buffer for swizzle, " << result;
     }
 
     const ShaderSupport &support = getShaderSupport(*shader);
 
     UINT stride    = 0;
     UINT startIdx  = 0;
     UINT drawCount = 0;
     D3D11_PRIMITIVE_TOPOLOGY topology;
 
     gl::Box area(0, 0, 0, size.width, size.height, size.depth);
     support.vertexWriteFunction(area, size, area, size, mappedResource.pData, &stride, &drawCount,
                                 &topology);
 
-    deviceContext->Unmap(mVertexBuffer, 0);
+    deviceContext->Unmap(mVertexBuffer.Get(), 0);
 
     // Set constant buffer
-    result = deviceContext->Map(mSwizzleCB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
+    result = deviceContext->Map(mSwizzleCB.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
     if (FAILED(result))
     {
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to map internal constant buffer for swizzle, HRESULT: 0x%X.",
-                         result);
+        return gl::OutOfMemory() << "Failed to map internal constant buffer for swizzle, "
+                                 << result;
     }
 
     unsigned int *swizzleIndices = reinterpret_cast<unsigned int *>(mappedResource.pData);
     swizzleIndices[0]            = GetSwizzleIndex(swizzleTarget.swizzleRed);
     swizzleIndices[1]            = GetSwizzleIndex(swizzleTarget.swizzleGreen);
     swizzleIndices[2]            = GetSwizzleIndex(swizzleTarget.swizzleBlue);
     swizzleIndices[3]            = GetSwizzleIndex(swizzleTarget.swizzleAlpha);
 
-    deviceContext->Unmap(mSwizzleCB, 0);
+    deviceContext->Unmap(mSwizzleCB.Get(), 0);
 
     // Apply vertex buffer
-    deviceContext->IASetVertexBuffers(0, 1, &mVertexBuffer, &stride, &startIdx);
+    deviceContext->IASetVertexBuffers(0, 1, mVertexBuffer.GetAddressOf(), &stride, &startIdx);
 
     // Apply constant buffer
-    deviceContext->PSSetConstantBuffers(0, 1, &mSwizzleCB);
+    deviceContext->PSSetConstantBuffers(0, 1, mSwizzleCB.GetAddressOf());
 
     // Apply state
     deviceContext->OMSetBlendState(nullptr, nullptr, 0xFFFFFFF);
     deviceContext->OMSetDepthStencilState(nullptr, 0xFFFFFFFF);
-    deviceContext->RSSetState(mScissorDisabledRasterizerState);
+    deviceContext->RSSetState(mScissorDisabledRasterizerState.Get());
 
     // Apply shaders
     deviceContext->IASetInputLayout(support.inputLayout);
     deviceContext->IASetPrimitiveTopology(topology);
     deviceContext->VSSetShader(support.vertexShader, nullptr, 0);
 
     deviceContext->PSSetShader(shader->pixelShader, nullptr, 0);
     deviceContext->GSSetShader(support.geometryShader, nullptr, 0);
@@ -1137,31 +1107,31 @@ gl::Error Blit11::swizzleTexture(ID3D11S
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     deviceContext->RSSetViewports(1, &viewport);
 
     // Apply textures
     stateManager->setShaderResource(gl::SAMPLER_PIXEL, 0, source);
 
     // Apply samplers
-    deviceContext->PSSetSamplers(0, 1, &mPointSampler);
+    deviceContext->PSSetSamplers(0, 1, mPointSampler.GetAddressOf());
 
     // Draw the quad
     deviceContext->Draw(drawCount, 0);
 
     // Unbind textures and render targets and vertex buffer
     stateManager->setShaderResource(gl::SAMPLER_PIXEL, 0, nullptr);
 
     UINT zero                      = 0;
     ID3D11Buffer *const nullBuffer = nullptr;
     deviceContext->IASetVertexBuffers(0, 1, &nullBuffer, &zero, &zero);
 
     mRenderer->markAllStateDirty();
 
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 gl::Error Blit11::copyTexture(ID3D11ShaderResourceView *source,
                               const gl::Box &sourceArea,
                               const gl::Extents &sourceSize,
                               ID3D11RenderTargetView *dest,
                               const gl::Box &destArea,
                               const gl::Extents &destSize,
@@ -1194,36 +1164,36 @@ gl::Error Blit11::copyTexture(ID3D11Shad
     const Shader *shader = nullptr;
     ANGLE_TRY(getBlitShader(destFormat, isSigned, unpackPremultiplyAlpha, unpackUnmultiplyAlpha,
                             dimension, &shader));
 
     const ShaderSupport &support = getShaderSupport(*shader);
 
     // Set vertices
     D3D11_MAPPED_SUBRESOURCE mappedResource;
-    result = deviceContext->Map(mVertexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
+    result =
+        deviceContext->Map(mVertexBuffer.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
     if (FAILED(result))
     {
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to map internal vertex buffer for texture copy, HRESULT: 0x%X.",
-                         result);
+        return gl::OutOfMemory() << "Failed to map internal vertex buffer for texture copy, "
+                                 << result;
     }
 
     UINT stride    = 0;
     UINT startIdx  = 0;
     UINT drawCount = 0;
     D3D11_PRIMITIVE_TOPOLOGY topology;
 
     support.vertexWriteFunction(sourceArea, sourceSize, destArea, destSize, mappedResource.pData,
                                 &stride, &drawCount, &topology);
 
-    deviceContext->Unmap(mVertexBuffer, 0);
+    deviceContext->Unmap(mVertexBuffer.Get(), 0);
 
     // Apply vertex buffer
-    deviceContext->IASetVertexBuffers(0, 1, &mVertexBuffer, &stride, &startIdx);
+    deviceContext->IASetVertexBuffers(0, 1, mVertexBuffer.GetAddressOf(), &stride, &startIdx);
 
     // Apply state
     if (maskOffAlpha)
     {
         ID3D11BlendState *blendState = mAlphaMaskBlendState.resolve(mRenderer->getDevice());
         ASSERT(blendState);
         deviceContext->OMSetBlendState(blendState, nullptr, 0xFFFFFFF);
     }
@@ -1237,21 +1207,21 @@ gl::Error Blit11::copyTexture(ID3D11Shad
     {
         D3D11_RECT scissorRect;
         scissorRect.left   = scissor->x;
         scissorRect.right  = scissor->x + scissor->width;
         scissorRect.top    = scissor->y;
         scissorRect.bottom = scissor->y + scissor->height;
 
         deviceContext->RSSetScissorRects(1, &scissorRect);
-        deviceContext->RSSetState(mScissorEnabledRasterizerState);
+        deviceContext->RSSetState(mScissorEnabledRasterizerState.Get());
     }
     else
     {
-        deviceContext->RSSetState(mScissorDisabledRasterizerState);
+        deviceContext->RSSetState(mScissorDisabledRasterizerState.Get());
     }
 
     // Apply shaders
     deviceContext->IASetInputLayout(support.inputLayout);
     deviceContext->IASetPrimitiveTopology(topology);
     deviceContext->VSSetShader(support.vertexShader, nullptr, 0);
 
     deviceContext->PSSetShader(shader->pixelShader, nullptr, 0);
@@ -1277,25 +1247,25 @@ gl::Error Blit11::copyTexture(ID3D11Shad
     // Apply textures
     stateManager->setShaderResource(gl::SAMPLER_PIXEL, 0, source);
 
     // Apply samplers
     ID3D11SamplerState *sampler = nullptr;
     switch (filter)
     {
         case GL_NEAREST:
-            sampler = mPointSampler;
+            sampler = mPointSampler.Get();
             break;
         case GL_LINEAR:
-            sampler = mLinearSampler;
+            sampler = mLinearSampler.Get();
             break;
 
         default:
             UNREACHABLE();
-            return gl::Error(GL_OUT_OF_MEMORY, "Internal error, unknown blit filter mode.");
+            return gl::InternalError() << "Internal error, unknown blit filter mode.";
     }
     deviceContext->PSSetSamplers(0, 1, &sampler);
 
     // Draw the quad
     deviceContext->Draw(drawCount, 0);
 
     // Unbind textures and render targets and vertex buffer
     stateManager->setShaderResource(gl::SAMPLER_PIXEL, 0, nullptr);
@@ -1333,62 +1303,62 @@ gl::Error Blit11::copyDepth(ID3D11Shader
 {
     ANGLE_TRY(initResources());
 
     HRESULT result;
     ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext();
 
     // Set vertices
     D3D11_MAPPED_SUBRESOURCE mappedResource;
-    result = deviceContext->Map(mVertexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
+    result =
+        deviceContext->Map(mVertexBuffer.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
     if (FAILED(result))
     {
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to map internal vertex buffer for texture copy, HRESULT: 0x%X.",
-                         result);
+        return gl::OutOfMemory() << "Failed to map internal vertex buffer for texture copy, "
+                                 << result;
     }
 
     UINT stride    = 0;
     UINT startIdx  = 0;
     UINT drawCount = 0;
     D3D11_PRIMITIVE_TOPOLOGY topology;
 
     Write2DVertices(sourceArea, sourceSize, destArea, destSize, mappedResource.pData, &stride,
                     &drawCount, &topology);
 
-    deviceContext->Unmap(mVertexBuffer, 0);
+    deviceContext->Unmap(mVertexBuffer.Get(), 0);
 
     // Apply vertex buffer
-    deviceContext->IASetVertexBuffers(0, 1, &mVertexBuffer, &stride, &startIdx);
+    deviceContext->IASetVertexBuffers(0, 1, mVertexBuffer.GetAddressOf(), &stride, &startIdx);
 
     // Apply state
     deviceContext->OMSetBlendState(nullptr, nullptr, 0xFFFFFFF);
-    deviceContext->OMSetDepthStencilState(mDepthStencilState, 0xFFFFFFFF);
+    deviceContext->OMSetDepthStencilState(mDepthStencilState.Get(), 0xFFFFFFFF);
 
     if (scissor)
     {
         D3D11_RECT scissorRect;
         scissorRect.left   = scissor->x;
         scissorRect.right  = scissor->x + scissor->width;
         scissorRect.top    = scissor->y;
         scissorRect.bottom = scissor->y + scissor->height;
 
         deviceContext->RSSetScissorRects(1, &scissorRect);
-        deviceContext->RSSetState(mScissorEnabledRasterizerState);
+        deviceContext->RSSetState(mScissorEnabledRasterizerState.Get());
     }
     else
     {
-        deviceContext->RSSetState(mScissorDisabledRasterizerState);
+        deviceContext->RSSetState(mScissorDisabledRasterizerState.Get());
     }
 
     ID3D11Device *device         = mRenderer->getDevice();
     ID3D11VertexShader *quad2DVS = mQuad2DVS.resolve(device);
     if (quad2DVS == nullptr)
     {
-        return gl::Error(GL_INVALID_OPERATION, "Error compiling internal 2D blit vertex shader");
+        return gl::InternalError() << "Error compiling internal 2D blit vertex shader";
     }
 
     // Apply shaders
     deviceContext->IASetInputLayout(mQuad2DIL.resolve(device));
     deviceContext->IASetPrimitiveTopology(topology);
     deviceContext->VSSetShader(quad2DVS, nullptr, 0);
 
     deviceContext->PSSetShader(mDepthPS.resolve(device), nullptr, 0);
@@ -1410,31 +1380,31 @@ gl::Error Blit11::copyDepth(ID3D11Shader
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     deviceContext->RSSetViewports(1, &viewport);
 
     // Apply textures
     stateManager->setShaderResource(gl::SAMPLER_PIXEL, 0, source);
 
     // Apply samplers
-    deviceContext->PSSetSamplers(0, 1, &mPointSampler);
+    deviceContext->PSSetSamplers(0, 1, mPointSampler.GetAddressOf());
 
     // Draw the quad
     deviceContext->Draw(drawCount, 0);
 
     // Unbind textures and render targets and vertex buffer
     stateManager->setShaderResource(gl::SAMPLER_PIXEL, 0, nullptr);
 
     UINT zero                      = 0;
     ID3D11Buffer *const nullBuffer = nullptr;
     deviceContext->IASetVertexBuffers(0, 1, &nullBuffer, &zero, &zero);
 
     mRenderer->markAllStateDirty();
 
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 gl::Error Blit11::copyDepthStencil(const TextureHelper11 &source,
                                    unsigned int sourceSubresource,
                                    const gl::Box &sourceArea,
                                    const gl::Extents &sourceSize,
                                    const TextureHelper11 &dest,
                                    unsigned int destSubresource,
@@ -1534,31 +1504,29 @@ gl::Error Blit11::copyAndConvertImpl(con
     deviceContext->CopySubresourceRegion(sourceStaging.getResource(), 0, 0, 0, 0,
                                          source.getResource(), sourceSubresource, nullptr);
 
     D3D11_MAPPED_SUBRESOURCE sourceMapping;
     HRESULT result =
         deviceContext->Map(sourceStaging.getResource(), 0, D3D11_MAP_READ, 0, &sourceMapping);
     if (FAILED(result))
     {
-        return gl::Error(
-            GL_OUT_OF_MEMORY,
-            "Failed to map internal source staging texture for depth stencil blit, HRESULT: 0x%X.",
-            result);
+        return gl::OutOfMemory()
+               << "Failed to map internal source staging texture for depth stencil blit, "
+               << result;
     }
 
     D3D11_MAPPED_SUBRESOURCE destMapping;
     result = deviceContext->Map(destStaging.getResource(), 0, D3D11_MAP_WRITE, 0, &destMapping);
     if (FAILED(result))
     {
         deviceContext->Unmap(sourceStaging.getResource(), 0);
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to map internal destination staging texture for depth stencil "
-                         "blit, HRESULT: 0x%X.",
-                         result);
+        return gl::OutOfMemory()
+               << "Failed to map internal destination staging texture for depth stencil blit, "
+               << result;
     }
 
     // Clip dest area to the destination size
     gl::Rectangle clipRect = gl::Rectangle(0, 0, destSize.width, destSize.height);
 
     // Clip dest area to the scissor
     if (scissor)
     {
@@ -1680,24 +1648,24 @@ gl::Error Blit11::getBlitShader(GLenum d
                                 ShaderDimension dimension,
                                 const Shader **shader)
 {
     BlitShaderType blitShaderType = GetBlitShaderType(destFormat, isSigned, unpackPremultiplyAlpha,
                                                       unpackUnmultiplyAlpha, dimension);
 
     if (blitShaderType == BLITSHADER_INVALID)
     {
-        return gl::Error(GL_INVALID_OPERATION, "Internal blit shader type mismatch");
+        return gl::InternalError() << "Internal blit shader type mismatch";
     }
 
     auto blitShaderIt = mBlitShaderMap.find(blitShaderType);
     if (blitShaderIt != mBlitShaderMap.end())
     {
         *shader = &blitShaderIt->second;
-        return gl::Error(GL_NO_ERROR);
+        return gl::NoError();
     }
 
     ASSERT(dimension == SHADER_2D || mRenderer->isES3Capable());
 
     ID3D11Device *device = mRenderer->getDevice();
 
     switch (blitShaderType)
     {
@@ -1888,41 +1856,41 @@ gl::Error Blit11::getBlitShader(GLenum d
             break;
         case BLITSHADER_3D_LUMAALPHA:
             addBlitShaderToMap(blitShaderType, SHADER_3D,
                                d3d11::CompilePS(device, g_PS_PassthroughLumAlpha3D,
                                                 "Blit11 3D luminance alpha pixel shader"));
             break;
         default:
             UNREACHABLE();
-            return gl::Error(GL_INVALID_OPERATION, "Internal error");
+            return gl::InternalError() << "Internal error";
     }
 
     blitShaderIt = mBlitShaderMap.find(blitShaderType);
     ASSERT(blitShaderIt != mBlitShaderMap.end());
     *shader = &blitShaderIt->second;
-    return gl::Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 gl::Error Blit11::getSwizzleShader(GLenum type,
                                    D3D11_SRV_DIMENSION viewDimension,
                                    const Shader **shader)
 {
     SwizzleShaderType swizzleShaderType = GetSwizzleShaderType(type, viewDimension);
 
     if (swizzleShaderType == SWIZZLESHADER_INVALID)
     {
-        return gl::Error(GL_INVALID_OPERATION, "Swizzle shader type not found");
+        return gl::InternalError() << "Swizzle shader type not found";
     }
 
     auto swizzleShaderIt = mSwizzleShaderMap.find(swizzleShaderType);
     if (swizzleShaderIt != mSwizzleShaderMap.end())
     {
         *shader = &swizzleShaderIt->second;
-        return gl::Error(GL_NO_ERROR);
+        return gl::NoError();
     }
 
     // Swizzling shaders (OpenGL ES 3+)
     ASSERT(mRenderer->isES3Capable());
 
     ID3D11Device *device = mRenderer->getDevice();
 
     switch (swizzleShaderType)
@@ -1984,33 +1952,32 @@ gl::Error Blit11::getSwizzleShader(GLenu
             break;
         case SWIZZLESHADER_ARRAY_INT:
             addSwizzleShaderToMap(swizzleShaderType, SHADER_3D,
                                   d3d11::CompilePS(device, g_PS_SwizzleI2DArray,
                                                    "Blit11 2D Array I swizzle pixel shader"));
             break;
         default:
             UNREACHABLE();
-            return gl::Error(GL_INVALID_OPERATION, "Internal error");
+            return gl::InternalError() << "Internal error";
     }
 
     swizzleShaderIt = mSwizzleShaderMap.find(swizzleShaderType);
     ASSERT(swizzleShaderIt != mSwizzleShaderMap.end());
     *shader = &swizzleShaderIt->second;
     return gl::NoError();
 }
 
 gl::ErrorOrResult<TextureHelper11> Blit11::resolveDepth(RenderTarget11 *depth)
 {
     // Multisampled depth stencil SRVs are not available in feature level 10.0
     if (mRenderer->getRenderer11DeviceCaps().featureLevel <= D3D_FEATURE_LEVEL_10_0)
     {
-        return gl::Error(GL_INVALID_OPERATION,
-                         "Resolving multisampled depth stencil textures is not supported in "
-                         "feature level 10.0.");
+        return gl::InternalError() << "Resolving multisampled depth stencil textures is not "
+                                      "supported in feature level 10.0.";
     }
 
     const auto &extents          = depth->getExtents();
     ID3D11Device *device         = mRenderer->getDevice();
     ID3D11DeviceContext *context = mRenderer->getDeviceContext();
 
     ANGLE_TRY(initResolveDepthStencil(extents));
 
@@ -2019,17 +1986,17 @@ gl::ErrorOrResult<TextureHelper11> Blit1
 
     // Apply the necessary state changes to the D3D11 immediate device context.
     context->IASetInputLayout(nullptr);
     context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
     context->VSSetShader(mResolveDepthStencilVS.resolve(device), nullptr, 0);
     context->GSSetShader(nullptr, nullptr, 0);
     context->RSSetState(nullptr);
     context->OMSetDepthStencilState(nullptr, 0xFFFFFFFF);
-    context->OMSetRenderTargets(1, &mResolvedDepthStencilRTView, nullptr);
+    context->OMSetRenderTargets(1, mResolvedDepthStencilRTView.GetAddressOf(), nullptr);
     context->OMSetBlendState(nullptr, nullptr, 0xFFFFFFF);
 
     // Set the viewport
     D3D11_VIEWPORT viewport;
     viewport.TopLeftX = 0;
     viewport.TopLeftY = 0;
     viewport.Width    = static_cast<FLOAT>(extents.width);
     viewport.Height   = static_cast<FLOAT>(extents.height);
@@ -2065,17 +2032,17 @@ gl::ErrorOrResult<TextureHelper11> Blit1
     destDesc.Usage              = D3D11_USAGE_DEFAULT;
     destDesc.BindFlags          = D3D11_BIND_SHADER_RESOURCE;
     destDesc.CPUAccessFlags     = 0;
     destDesc.MiscFlags          = 0;
 
     HRESULT hr = device->CreateTexture2D(&destDesc, nullptr, &destTex);
     if (FAILED(hr))
     {
-        return gl::Error(GL_OUT_OF_MEMORY, "Error creating depth resolve dest texture.");
+        return gl::OutOfMemory() << "Error creating depth resolve dest texture, " << hr;
     }
     d3d11::SetDebugName(destTex, "resolveDepthDest");
 
     TextureHelper11 dest = TextureHelper11::MakeAndPossess2D(destTex, depth->getFormatSet());
     ANGLE_TRY(copyAndConvert(mResolvedDepthStencil, 0, copyBox, extents, dest, 0, copyBox, extents,
                              nullptr, 0, 0, 0, 8, dsDxgiInfo.pixelBytes, copyFunction));
     return dest;
 }
@@ -2109,44 +2076,43 @@ gl::Error Blit11::initResolveDepthStenci
     textureDesc.MiscFlags          = 0;
 
     ID3D11Device *device = mRenderer->getDevice();
 
     ID3D11Texture2D *resolvedDepthStencil = nullptr;
     HRESULT hr = device->CreateTexture2D(&textureDesc, nullptr, &resolvedDepthStencil);
     if (FAILED(hr))
     {
-        return gl::Error(GL_OUT_OF_MEMORY, "Failed to allocate resolved depth stencil texture");
+        return gl::OutOfMemory() << "Failed to allocate resolved depth stencil texture, " << hr;
     }
     d3d11::SetDebugName(resolvedDepthStencil, "Blit11::mResolvedDepthStencil");
 
     ASSERT(mResolvedDepthStencilRTView == nullptr);
-    hr =
-        device->CreateRenderTargetView(resolvedDepthStencil, nullptr, &mResolvedDepthStencilRTView);
+    hr = device->CreateRenderTargetView(resolvedDepthStencil, nullptr,
+                                        mResolvedDepthStencilRTView.GetAddressOf());
     if (FAILED(hr))
     {
-        return gl::Error(GL_OUT_OF_MEMORY,
-                         "Failed to allocate Blit11::mResolvedDepthStencilRTView");
+        return gl::OutOfMemory() << "Failed to allocate Blit11::mResolvedDepthStencilRTView, "
+                                 << hr;
     }
     d3d11::SetDebugName(mResolvedDepthStencilRTView, "Blit11::mResolvedDepthStencilRTView");
 
     mResolvedDepthStencil = TextureHelper11::MakeAndPossess2D(resolvedDepthStencil, formatSet);
 
     return gl::NoError();
 }
 
 gl::ErrorOrResult<TextureHelper11> Blit11::resolveStencil(RenderTarget11 *depthStencil,
                                                           bool alsoDepth)
 {
     // Multisampled depth stencil SRVs are not available in feature level 10.0
     if (mRenderer->getRenderer11DeviceCaps().featureLevel <= D3D_FEATURE_LEVEL_10_0)
     {
-        return gl::Error(GL_INVALID_OPERATION,
-                         "Resolving multisampled depth stencil textures is not supported in "
-                         "feature level 10.0.");
+        return gl::InternalError() << "Resolving multisampled depth stencil textures is not "
+                                      "supported in feature level 10.0.";
     }
 
     const auto &extents = depthStencil->getExtents();
 
     ANGLE_TRY(initResolveDepthStencil(extents));
 
     ID3D11Device *device         = mRenderer->getDevice();
     ID3D11DeviceContext *context = mRenderer->getDeviceContext();
@@ -2156,59 +2122,60 @@ gl::ErrorOrResult<TextureHelper11> Blit1
     // Check if we need to re-create the stencil SRV.
     if (mStencilSRV)
     {
         ID3D11Resource *priorResource = nullptr;
         mStencilSRV->GetResource(&priorResource);
 
         if (stencilResource != priorResource)
         {
-            SafeRelease(mStencilSRV);
+            mStencilSRV.Reset();
         }
     }
 
-    if (!mStencilSRV)
+    if (mStencilSRV == nullptr)
     {
         D3D11_SHADER_RESOURCE_VIEW_DESC srViewDesc;
         srViewDesc.Format        = GetStencilSRVFormat(depthStencil->getFormatSet());
         srViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DMS;
 
-        HRESULT hr = device->CreateShaderResourceView(stencilResource, &srViewDesc, &mStencilSRV);
+        HRESULT hr = device->CreateShaderResourceView(stencilResource, &srViewDesc,
+                                                      mStencilSRV.GetAddressOf());
         if (FAILED(hr))
         {
-            return gl::Error(GL_OUT_OF_MEMORY, "Error creating Blit11 stencil SRV");
+            return gl::OutOfMemory() << "Error creating Blit11 stencil SRV, " << hr;
         }
         d3d11::SetDebugName(mStencilSRV, "Blit11::mStencilSRV");
     }
 
     // Notify the Renderer that all state should be invalidated.
     mRenderer->markAllStateDirty();
 
     // Apply the necessary state changes to the D3D11 immediate device context.
     context->IASetInputLayout(nullptr);
     context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
     context->VSSetShader(mResolveDepthStencilVS.resolve(device), nullptr, 0);
     context->GSSetShader(nullptr, nullptr, 0);
     context->RSSetState(nullptr);
     context->OMSetDepthStencilState(nullptr, 0xFFFFFFFF);
-    context->OMSetRenderTargets(1, &mResolvedDepthStencilRTView, nullptr);
+    context->OMSetRenderTargets(1, mResolvedDepthStencilRTView.GetAddressOf(), nullptr);
     context->OMSetBlendState(nullptr, nullptr, 0xFFFFFFF);
 
     // Set the viewport
     D3D11_VIEWPORT viewport;
     viewport.TopLeftX = 0;
     viewport.TopLeftY = 0;
     viewport.Width    = static_cast<FLOAT>(extents.width);
     viewport.Height   = static_cast<FLOAT>(extents.height);
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     context->RSSetViewports(1, &viewport);
 
     ID3D11ShaderResourceView *pixelViews[] = {
-        depthStencil->getShaderResourceView(), mStencilSRV,
+        depthStencil->getShaderResourceView(), mStencilSRV.Get(),
     };
 
     context->PSSetShaderResources(0, 2, pixelViews);
 
     // Resolving the depth buffer works by sampling the depth in the shader using a SRV, then
     // writing to the resolved depth buffer using SV_Depth. We can't use this method for stencil
     // because SV_StencilRef isn't supported until HLSL 5.1/D3D11.3.
     if (alsoDepth)
@@ -2238,13 +2205,13 @@ gl::ErrorOrResult<TextureHelper11> Blit1
                                  nullptr, 0, 0, 0, 8u, dsDxgiInfo.pixelBytes, copyFunction));
 
     // Return the resolved depth texture, which the caller must Release.
     return dest;
 }
 
 void Blit11::releaseResolveDepthStencilResources()
 {
-    SafeRelease(mStencilSRV);
-    SafeRelease(mResolvedDepthStencilRTView);
+    mStencilSRV.Reset();
+    mResolvedDepthStencilRTView.Reset();
 }
 
 }  // namespace rx
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Blit11.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Blit11.h
@@ -176,17 +176,16 @@ class Blit11 : angle::NonCopyable
     {
         ID3D11InputLayout *inputLayout;
         ID3D11VertexShader *vertexShader;
         ID3D11GeometryShader *geometryShader;
         WriteVertexFunction vertexWriteFunction;
     };
 
     gl::Error initResources();
-    void freeResources();
 
     ShaderSupport getShaderSupport(const Shader &shader);
 
     static BlitShaderType GetBlitShaderType(GLenum destinationFormat,
                                             bool isSigned,
                                             bool unpackPremultiplyAlpha,
                                             bool unpackUnmultiplyAlpha,
                                             ShaderDimension dimension);
@@ -257,39 +256,39 @@ class Blit11 : angle::NonCopyable
     gl::Error initResolveDepthStencil(const gl::Extents &extents);
 
     Renderer11 *mRenderer;
 
     std::map<BlitShaderType, Shader> mBlitShaderMap;
     std::map<SwizzleShaderType, Shader> mSwizzleShaderMap;
 
     bool mResourcesInitialized;
-    ID3D11Buffer *mVertexBuffer;
-    ID3D11SamplerState *mPointSampler;
-    ID3D11SamplerState *mLinearSampler;
-    ID3D11RasterizerState *mScissorEnabledRasterizerState;
-    ID3D11RasterizerState *mScissorDisabledRasterizerState;
-    ID3D11DepthStencilState *mDepthStencilState;
+    angle::ComPtr<ID3D11Buffer> mVertexBuffer;
+    angle::ComPtr<ID3D11SamplerState> mPointSampler;
+    angle::ComPtr<ID3D11SamplerState> mLinearSampler;
+    angle::ComPtr<ID3D11RasterizerState> mScissorEnabledRasterizerState;
+    angle::ComPtr<ID3D11RasterizerState> mScissorDisabledRasterizerState;
+    angle::ComPtr<ID3D11DepthStencilState> mDepthStencilState;
 
     d3d11::LazyInputLayout mQuad2DIL;
     d3d11::LazyShader<ID3D11VertexShader> mQuad2DVS;
     d3d11::LazyShader<ID3D11PixelShader> mDepthPS;
 
     d3d11::LazyInputLayout mQuad3DIL;
     d3d11::LazyShader<ID3D11VertexShader> mQuad3DVS;
     d3d11::LazyShader<ID3D11GeometryShader> mQuad3DGS;
 
     d3d11::LazyBlendState mAlphaMaskBlendState;
 
-    ID3D11Buffer *mSwizzleCB;
+    angle::ComPtr<ID3D11Buffer> mSwizzleCB;
 
     d3d11::LazyShader<ID3D11VertexShader> mResolveDepthStencilVS;
     d3d11::LazyShader<ID3D11PixelShader> mResolveDepthPS;
     d3d11::LazyShader<ID3D11PixelShader> mResolveDepthStencilPS;
     d3d11::LazyShader<ID3D11PixelShader> mResolveStencilPS;
-    ID3D11ShaderResourceView *mStencilSRV;
+    angle::ComPtr<ID3D11ShaderResourceView> mStencilSRV;
     TextureHelper11 mResolvedDepthStencil;
-    ID3D11RenderTargetView *mResolvedDepthStencilRTView;
+    angle::ComPtr<ID3D11RenderTargetView> mResolvedDepthStencilRTView;
 };
 
 }  // namespace rx
 
 #endif  // LIBANGLE_RENDERER_D3D_D3D11_BLIT11_H_
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
@@ -687,17 +687,16 @@ gl::ErrorOrResult<Buffer11::BufferStorag
     }
 
     // resize buffer
     if (newStorage->getSize() < mSize)
     {
         ANGLE_TRY(newStorage->resize(mSize, true));
     }
 
-    mIdleness[usage] = 0;
     ANGLE_TRY(updateBufferStorage(newStorage, 0, mSize));
     ANGLE_TRY(markBufferUsage(usage));
 
     return newStorage;
 }
 
 Buffer11::BufferStorage *Buffer11::allocateStorage(BufferUsage usage)
 {
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
@@ -366,29 +366,33 @@ gl::Error Clear11::clearFramebuffer(cons
 
                     D3D11_RECT rect;
                     rect.left   = clearParams.scissor.x;
                     rect.right  = clearParams.scissor.x + clearParams.scissor.width;
                     rect.top    = clearParams.scissor.y;
                     rect.bottom = clearParams.scissor.y + clearParams.scissor.height;
 
                     deviceContext1->ClearView(framebufferRTV, clearValues, &rect, 1);
-
-                    if (mRenderer->getWorkarounds().callClearTwice)
+                    if (mRenderer->getWorkarounds().callClearTwiceOnSmallTarget)
                     {
-                        deviceContext1->ClearView(framebufferRTV, clearValues, &rect, 1);
+                        if (clearParams.scissor.width <= 16 || clearParams.scissor.height <= 16)
+                        {
+                            deviceContext1->ClearView(framebufferRTV, clearValues, &rect, 1);
+                        }
                     }
                 }
                 else
                 {
                     deviceContext->ClearRenderTargetView(framebufferRTV, clearValues);
-
-                    if (mRenderer->getWorkarounds().callClearTwice)
+                    if (mRenderer->getWorkarounds().callClearTwiceOnSmallTarget)
                     {
-                        deviceContext->ClearRenderTargetView(framebufferRTV, clearValues);
+                        if (framebufferSize.width <= 16 || framebufferSize.height <= 16)
+                        {
+                            deviceContext->ClearRenderTargetView(framebufferRTV, clearValues);
+                        }
                     }
                 }
             }
         }
     }
 
     if (clearParams.clearDepth || clearParams.clearStencil)
     {
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
@@ -77,16 +77,19 @@ TextureImpl *Context11::createTexture(co
         case GL_TEXTURE_CUBE_MAP:
             return new TextureD3D_Cube(state, mRenderer);
         case GL_TEXTURE_3D:
             return new TextureD3D_3D(state, mRenderer);
         case GL_TEXTURE_2D_ARRAY:
             return new TextureD3D_2DArray(state, mRenderer);
         case GL_TEXTURE_EXTERNAL_OES:
             return new TextureD3D_External(state, mRenderer);
+        case GL_TEXTURE_2D_MULTISAMPLE:
+            UNIMPLEMENTED();
+            break;
         default:
             UNREACHABLE();
     }
 
     return nullptr;
 }
 
 RenderbufferImpl *Context11::createRenderbuffer()
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Image11.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Image11.cpp
@@ -224,40 +224,39 @@ DXGI_FORMAT Image11::getDXGIFormat() con
     return mDXGIFormat;
 }
 
 // Store the pixel rectangle designated by xoffset,yoffset,width,height with pixels stored as
 // format/type at input
 // into the target pixel rectangle.
 gl::Error Image11::loadData(const gl::Box &area,
                             const gl::PixelUnpackState &unpack,
-                            GLenum inputType,
+                            GLenum type,
                             const void *input,
                             bool applySkipImages)
 {
-    const auto sizedInputFormat = getSizedInputFormat(inputType);
-    const gl::InternalFormat &inputFormat = gl::GetInternalFormatInfo(sizedInputFormat);
+    const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(mInternalFormat);
     GLuint inputRowPitch                 = 0;
     ANGLE_TRY_RESULT(
-        inputFormat.computeRowPitch(area.width, unpack.alignment, unpack.rowLength),
+        formatInfo.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
         inputRowPitch);
     GLuint inputDepthPitch = 0;
-    ANGLE_TRY_RESULT(gl::InternalFormat::computeDepthPitch(area.height, unpack.imageHeight, inputRowPitch),
+    ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(area.height, unpack.imageHeight, inputRowPitch),
                      inputDepthPitch);
     GLuint inputSkipBytes = 0;
     ANGLE_TRY_RESULT(
-        inputFormat.computeSkipBytes(inputRowPitch, inputDepthPitch, unpack, applySkipImages),
+        formatInfo.computeSkipBytes(inputRowPitch, inputDepthPitch, unpack, applySkipImages),
         inputSkipBytes);
 
     const d3d11::DXGIFormatSize &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(mDXGIFormat);
     GLuint outputPixelSize                      = dxgiFormatInfo.pixelBytes;
 
     const d3d11::Format &d3dFormatInfo =
         d3d11::Format::Get(mInternalFormat, mRenderer->getRenderer11DeviceCaps());
-    LoadImageFunction loadFunction = d3dFormatInfo.getLoadFunctions()(inputType).loadFunction;
+    LoadImageFunction loadFunction = d3dFormatInfo.getLoadFunctions()(type).loadFunction;
 
     D3D11_MAPPED_SUBRESOURCE mappedImage;
     ANGLE_TRY(map(D3D11_MAP_WRITE, &mappedImage));
 
     uint8_t *offsetMappedData = (reinterpret_cast<uint8_t *>(mappedImage.pData) +
                                  (area.y * mappedImage.RowPitch + area.x * outputPixelSize +
                                   area.z * mappedImage.DepthPitch));
     loadFunction(area.width, area.height, area.depth,
@@ -268,19 +267,19 @@ gl::Error Image11::loadData(const gl::Bo
 
     return gl::NoError();
 }
 
 gl::Error Image11::loadCompressedData(const gl::Box &area, const void *input)
 {
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(mInternalFormat);
     GLsizei inputRowPitch                = 0;
-    ANGLE_TRY_RESULT(formatInfo.computeRowPitch(area.width, 1, 0), inputRowPitch);
+    ANGLE_TRY_RESULT(formatInfo.computeRowPitch(GL_UNSIGNED_BYTE, area.width, 1, 0), inputRowPitch);
     GLsizei inputDepthPitch = 0;
-    ANGLE_TRY_RESULT(gl::InternalFormat::computeDepthPitch(area.height, 0, inputRowPitch), inputDepthPitch);
+    ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(area.height, 0, inputRowPitch), inputDepthPitch);
 
     const d3d11::DXGIFormatSize &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(mDXGIFormat);
     GLuint outputPixelSize                      = dxgiFormatInfo.pixelBytes;
     GLuint outputBlockWidth                     = dxgiFormatInfo.blockWidth;
     GLuint outputBlockHeight                    = dxgiFormatInfo.blockHeight;
 
     ASSERT(area.x % outputBlockWidth == 0);
     ASSERT(area.y % outputBlockHeight == 0);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
@@ -3204,16 +3204,25 @@ gl::Error Renderer11::copyTexture(const 
                                      unpackUnmultiplyAlpha));
     }
 
     destStorage11->markLevelDirty(destLevel);
 
     return gl::NoError();
 }
 
+UINT64 EstimateSize(D3D11_TEXTURE2D_DESC &desc)
+{
+    //XXX: handle overflow (64 bits should be enough for anyone...)
+    const d3d11::DXGIFormatSize &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(desc.Format);
+    // NVIDIA seems to align the width of buffers by 8 and the height by 64, so we do the same.
+    UINT64 total = UINT64(rx::roundUp(desc.Width, UINT(8))) * rx::roundUp(desc.Height, UINT(64)) * desc.SampleDesc.Count * dxgiFormatInfo.pixelBytes;
+    return total;
+}
+
 gl::Error Renderer11::copyCompressedTexture(const gl::Texture *source,
                                             GLint sourceLevel,
                                             TextureStorage *storage,
                                             GLint destLevel)
 {
     TextureStorage11_2D *destStorage11 = GetAs<TextureStorage11_2D>(storage);
     ASSERT(destStorage11);
 
@@ -3239,25 +3248,16 @@ gl::Error Renderer11::copyCompressedText
     UINT sourceSubresource     = sourceStorage11->getSubresourceIndex(sourceIndex);
 
     mDeviceContext->CopySubresourceRegion(destResource, destSubresource, 0, 0, 0, sourceResource,
                                           sourceSubresource, nullptr);
 
     return gl::NoError();
 }
 
-UINT64 EstimateSize(D3D11_TEXTURE2D_DESC &desc)
-{
-    //XXX: handle overflow (64 bits should be enough for anyone...)
-    const d3d11::DXGIFormatSize &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(desc.Format);
-    // NVIDIA seems to align the width of buffers by 8 and the height by 64, so we do the same.
-    UINT64 total = UINT64(rx::roundUp(desc.Width, UINT(8))) * rx::roundUp(desc.Height, UINT(64)) * desc.SampleDesc.Count * dxgiFormatInfo.pixelBytes;
-    return total;
-}
-
 gl::Error Renderer11::createRenderTarget(int width,
                                          int height,
                                          GLenum format,
                                          GLsizei samples,
                                          RenderTargetD3D **outRT)
 {
     const d3d11::Format &formatInfo = d3d11::Format::Get(format, mRenderer11DeviceCaps);
 
@@ -3300,16 +3300,17 @@ gl::Error Renderer11::createRenderTarget
         desc.BindFlags = (bindRTV ? D3D11_BIND_RENDER_TARGET : 0) |
                          (bindDSV ? D3D11_BIND_DEPTH_STENCIL : 0) |
                          (bindSRV ? D3D11_BIND_SHADER_RESOURCE : 0);
 
         // The format must be either an RTV or a DSV
         ASSERT(bindRTV != bindDSV);
 
         ID3D11Texture2D *texture = NULL;
+
         HRESULT result;
 
         // Some Nvidia drivers (GeForce GT 610 w/ 9.18.13.3523) crash with very large render targets
         if (EstimateSize(desc) > getMaxResourceSize())
         {
             result = E_OUTOFMEMORY;
         }
         else
@@ -3567,35 +3568,37 @@ gl::Error Renderer11::loadExecutable(con
 gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog,
                                           const std::string &shaderHLSL,
                                           ShaderType type,
                                           const std::vector<D3DVarying> &streamOutVaryings,
                                           bool separatedOutputBuffers,
                                           const D3DCompilerWorkarounds &workarounds,
                                           ShaderExecutableD3D **outExectuable)
 {
-    const char *profileType = NULL;
+    std::stringstream profileStream;
+
     switch (type)
     {
         case SHADER_VERTEX:
-            profileType = "vs";
+            profileStream << "vs";
             break;
         case SHADER_PIXEL:
-            profileType = "ps";
+            profileStream << "ps";
             break;
         case SHADER_GEOMETRY:
-            profileType = "gs";
+            profileStream << "gs";
             break;
         default:
             UNREACHABLE();
             return gl::Error(GL_INVALID_OPERATION);
     }
 
-    std::string profile = FormatString("%s_%d_%d%s", profileType, getMajorShaderModel(),
-                                       getMinorShaderModel(), getShaderModelSuffix().c_str());
+    profileStream << "_" << getMajorShaderModel() << "_" << getMinorShaderModel()
+                  << getShaderModelSuffix();
+    std::string profile = profileStream.str();
 
     UINT flags = D3DCOMPILE_OPTIMIZATION_LEVEL2;
 
     if (gl::DebugAnnotationsActive())
     {
 #ifndef NDEBUG
         flags = D3DCOMPILE_SKIP_OPTIMIZATION;
 #endif
@@ -3651,16 +3654,21 @@ gl::Error Renderer11::compileToExecutabl
     if (!debugInfo.empty())
     {
         (*outExectuable)->appendDebugInfo(debugInfo);
     }
 
     return gl::NoError();
 }
 
+gl::Error Renderer11::ensureHLSLCompilerInitialized()
+{
+    return mCompiler.ensureInitialized();
+}
+
 UniformStorageD3D *Renderer11::createUniformStorage(size_t storageSize)
 {
     return new UniformStorage11(this, storageSize);
 }
 
 VertexBuffer *Renderer11::createVertexBuffer()
 {
     return new VertexBuffer11(this);
@@ -4269,17 +4277,17 @@ gl::Error Renderer11::blitRenderbufferRe
 
     SafeRelease(readSRV);
 
     return gl::NoError();
 }
 
 bool Renderer11::isES3Capable() const
 {
-    return (d3d11_gl::GetMaximumClientVersion(mRenderer11DeviceCaps.featureLevel) > 2);
+    return (d3d11_gl::GetMaximumClientVersion(mRenderer11DeviceCaps.featureLevel).major > 2);
 };
 
 void Renderer11::onSwap()
 {
     // Send histogram updates every half hour
     const double kHistogramUpdateInterval = 30 * 60;
 
     const double currentTime         = ANGLEPlatformCurrent()->monotonicallyIncreasingTime();
@@ -4598,17 +4606,17 @@ gl::Error Renderer11::getScratchMemoryBu
     ASSERT(mScratchMemoryBuffer.size() >= requestedSize);
 
     *bufferOut = &mScratchMemoryBuffer;
     return gl::NoError();
 }
 
 gl::Version Renderer11::getMaxSupportedESVersion() const
 {
-    return gl::Version(d3d11_gl::GetMaximumClientVersion(mRenderer11DeviceCaps.featureLevel), 0);
+    return d3d11_gl::GetMaximumClientVersion(mRenderer11DeviceCaps.featureLevel);
 }
 
 gl::DebugAnnotator *Renderer11::getAnnotator()
 {
     return mAnnotator;
 }
 
 }  // namespace rx
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
@@ -246,16 +246,18 @@ class Renderer11 : public RendererD3D
                              ShaderExecutableD3D **outExecutable) override;
     gl::Error compileToExecutable(gl::InfoLog &infoLog,
                                   const std::string &shaderHLSL,
                                   ShaderType type,
                                   const std::vector<D3DVarying> &streamOutVaryings,
                                   bool separatedOutputBuffers,
                                   const D3DCompilerWorkarounds &workarounds,
                                   ShaderExecutableD3D **outExectuable) override;
+    gl::Error ensureHLSLCompilerInitialized() override;
+
     UniformStorageD3D *createUniformStorage(size_t storageSize) override;
 
     // Image operations
     ImageD3D *createImage() override;
     gl::Error generateMipmap(ImageD3D *dest, ImageD3D *source) override;
     gl::Error generateMipmapUsingD3D(TextureStorage *storage,
                                      const gl::TextureState &textureState) override;
     TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain) override;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
@@ -583,74 +583,74 @@ gl::Error TextureStorage11::copyToStorag
     dest11->markDirty();
 
     return gl::NoError();
 }
 
 gl::Error TextureStorage11::setData(const gl::ImageIndex &index,
                                     ImageD3D *image,
                                     const gl::Box *destBox,
-                                    GLenum inputType,
+                                    GLenum type,
                                     const gl::PixelUnpackState &unpack,
                                     const uint8_t *pixelData)
 {
     ASSERT(!image->isDirty());
 
     markLevelDirty(index.mipIndex);
 
     ID3D11Resource *resource = nullptr;
     ANGLE_TRY(getResource(&resource));
     ASSERT(resource);
 
     UINT destSubresource = getSubresourceIndex(index);
 
-    const auto sizedInputFormat = image->getSizedInputFormat(inputType);
-    const gl::InternalFormat &inputFormat = gl::GetInternalFormatInfo(sizedInputFormat);
+    const gl::InternalFormat &internalFormatInfo =
+        gl::GetInternalFormatInfo(image->getInternalFormat());
 
     gl::Box levelBox(0, 0, 0, getLevelWidth(index.mipIndex), getLevelHeight(index.mipIndex),
                      getLevelDepth(index.mipIndex));
     bool fullUpdate = (destBox == nullptr || *destBox == levelBox);
-    ASSERT(inputFormat.depthBits == 0 || fullUpdate);
+    ASSERT(internalFormatInfo.depthBits == 0 || fullUpdate);
 
     // TODO(jmadill): Handle compressed formats
     // Compressed formats have different load syntax, so we'll have to handle them with slightly
     // different logic. Will implemnent this in a follow-up patch, and ensure we do not use SetData
     // with compressed formats in the calling logic.
-    ASSERT(!inputFormat.compressed);
+    ASSERT(!internalFormatInfo.compressed);
 
     const int width    = destBox ? destBox->width : static_cast<int>(image->getWidth());
     const int height   = destBox ? destBox->height : static_cast<int>(image->getHeight());
     const int depth    = destBox ? destBox->depth : static_cast<int>(image->getDepth());
     GLuint srcRowPitch = 0;
     ANGLE_TRY_RESULT(
-        inputFormat.computeRowPitch(width, unpack.alignment, unpack.rowLength),
+        internalFormatInfo.computeRowPitch(type, width, unpack.alignment, unpack.rowLength),
         srcRowPitch);
     GLuint srcDepthPitch = 0;
-    ANGLE_TRY_RESULT(gl::InternalFormat::computeDepthPitch(height, unpack.imageHeight, srcRowPitch),
+    ANGLE_TRY_RESULT(internalFormatInfo.computeDepthPitch(height, unpack.imageHeight, srcRowPitch),
                      srcDepthPitch);
     GLuint srcSkipBytes = 0;
     ANGLE_TRY_RESULT(
-        inputFormat.computeSkipBytes(srcRowPitch, srcDepthPitch, unpack, index.is3D()),
+        internalFormatInfo.computeSkipBytes(srcRowPitch, srcDepthPitch, unpack, index.is3D()),
         srcSkipBytes);
 
     const d3d11::Format &d3d11Format =
         d3d11::Format::Get(image->getInternalFormat(), mRenderer->getRenderer11DeviceCaps());
     const d3d11::DXGIFormatSize &dxgiFormatInfo =
         d3d11::GetDXGIFormatSizeInfo(d3d11Format.texFormat);
 
     const size_t outputPixelSize = dxgiFormatInfo.pixelBytes;
 
     UINT bufferRowPitch   = static_cast<unsigned int>(outputPixelSize) * width;
     UINT bufferDepthPitch = bufferRowPitch * height;
 
     const size_t neededSize        = bufferDepthPitch * depth;
     MemoryBuffer *conversionBuffer = nullptr;
     const uint8_t *data            = nullptr;
 
-    LoadImageFunctionInfo loadFunctionInfo = d3d11Format.getLoadFunctions()(inputType);
+    LoadImageFunctionInfo loadFunctionInfo = d3d11Format.getLoadFunctions()(type);
     if (loadFunctionInfo.requiresConversion)
     {
         ANGLE_TRY(mRenderer->getScratchMemoryBuffer(neededSize, &conversionBuffer));
         loadFunctionInfo.loadFunction(width, height, depth, pixelData + srcSkipBytes, srcRowPitch,
                                       srcDepthPitch, conversionBuffer->data(), bufferRowPitch,
                                       bufferDepthPitch);
         data = conversionBuffer->data();
     }
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Trim11.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/Trim11.h
@@ -8,19 +8,17 @@
 
 #ifndef LIBANGLE_RENDERER_D3D_D3D11_TRIM11_H_
 #define LIBANGLE_RENDERER_D3D_D3D11_TRIM11_H_
 
 #include "common/angleutils.h"
 #include "libANGLE/angletypes.h"
 #include "libANGLE/Error.h"
 
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
-typedef void* EventRegistrationToken;
-#else
+#if defined(ANGLE_ENABLE_WINDOWS_STORE)
 #include <EventToken.h>
 #endif
 
 namespace rx
 {
 class Renderer11;
 
 class Trim11 : angle::NonCopyable
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
@@ -67,33 +67,33 @@ class DXGISupportHelper : angle::NonCopy
         return ((supportedBits & supportMask) == supportMask);
     }
 
   private:
     ID3D11Device *mDevice;
     D3D_FEATURE_LEVEL mFeatureLevel;
 };
 
-gl::TextureCaps GenerateTextureFormatCaps(GLint maxClientVersion,
+gl::TextureCaps GenerateTextureFormatCaps(gl::Version maxClientVersion,
                                           GLenum internalFormat,
                                           ID3D11Device *device,
                                           const Renderer11DeviceCaps &renderer11DeviceCaps)
 {
     gl::TextureCaps textureCaps;
 
     DXGISupportHelper support(device, renderer11DeviceCaps.featureLevel);
     const d3d11::Format &formatInfo = d3d11::Format::Get(internalFormat, renderer11DeviceCaps);
 
     const gl::InternalFormat &internalFormatInfo = gl::GetInternalFormatInfo(internalFormat);
 
     UINT texSupportMask = D3D11_FORMAT_SUPPORT_TEXTURE2D;
     if (internalFormatInfo.depthBits == 0 && internalFormatInfo.stencilBits == 0)
     {
         texSupportMask |= D3D11_FORMAT_SUPPORT_TEXTURECUBE;
-        if (maxClientVersion > 2)
+        if (maxClientVersion.major > 2)
         {
             texSupportMask |= D3D11_FORMAT_SUPPORT_TEXTURE3D;
         }
     }
 
     textureCaps.texturable = support.query(formatInfo.texFormat, texSupportMask);
     textureCaps.filterable =
         support.query(formatInfo.srvFormat, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE);
@@ -1018,46 +1018,48 @@ unsigned int GetReservedFragmentUniformV
             return 3;
 
         default:
             UNREACHABLE();
             return 0;
     }
 }
 
-GLint GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel)
+gl::Version GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel)
 {
     switch (featureLevel)
     {
         case D3D_FEATURE_LEVEL_11_1:
         case D3D_FEATURE_LEVEL_11_0:
+            return gl::Version(3, 1);
         case D3D_FEATURE_LEVEL_10_1:
-            return 3;
+            return gl::Version(3, 0);
 
         case D3D_FEATURE_LEVEL_10_0:
         case D3D_FEATURE_LEVEL_9_3:
         case D3D_FEATURE_LEVEL_9_2:
         case D3D_FEATURE_LEVEL_9_1:
-            return 2;
+            return gl::Version(2, 0);
 
         default:
             UNREACHABLE();
-            return 0;
+            return gl::Version(0, 0);
     }
 }
 
 void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, const Renderer11DeviceCaps &renderer11DeviceCaps, gl::Caps *caps,
                   gl::TextureCapsMap *textureCapsMap, gl::Extensions *extensions, gl::Limitations *limitations)
 {
     GLuint maxSamples = 0;
     D3D_FEATURE_LEVEL featureLevel = renderer11DeviceCaps.featureLevel;
     const gl::FormatSet &allFormats = gl::GetAllSizedInternalFormats();
     for (gl::FormatSet::const_iterator internalFormat = allFormats.begin(); internalFormat != allFormats.end(); ++internalFormat)
     {
-        gl::TextureCaps textureCaps = GenerateTextureFormatCaps(GetMaximumClientVersion(featureLevel), *internalFormat, device, renderer11DeviceCaps);
+        gl::TextureCaps textureCaps = GenerateTextureFormatCaps(
+            GetMaximumClientVersion(featureLevel), *internalFormat, device, renderer11DeviceCaps);
         textureCapsMap->insert(*internalFormat, textureCaps);
 
         maxSamples = std::max(maxSamples, textureCaps.getMaxSamples());
 
         if (gl::GetInternalFormatInfo(*internalFormat).compressed)
         {
             caps->compressedTextureFormats.push_back(*internalFormat);
         }
@@ -1852,17 +1854,17 @@ WorkaroundsD3D GenerateWorkarounds(const
 
     workarounds.preAddTexelFetchOffsets = IsIntel(adapterDesc.VendorId);
     workarounds.disableB5G6R5Support    = IsIntel(adapterDesc.VendorId);
     workarounds.rewriteUnaryMinusOperator =
         IsIntel(adapterDesc.VendorId) &&
         (IsBroadwell(adapterDesc.DeviceId) || IsHaswell(adapterDesc.DeviceId));
     workarounds.emulateIsnanFloat =
         IsIntel(adapterDesc.VendorId) && IsSkylake(adapterDesc.DeviceId);
-    workarounds.callClearTwice =
+    workarounds.callClearTwiceOnSmallTarget =
         IsIntel(adapterDesc.VendorId) && IsSkylake(adapterDesc.DeviceId);
 
     // TODO(jmadill): Disable when we have a fixed driver version.
     workarounds.emulateTinyStencilTextures = IsAMD(adapterDesc.VendorId);
 
     // The tiny stencil texture workaround involves using CopySubresource or UpdateSubresource on a
     // depth stencil texture.  This is not allowed until feature level 10.1 but since it is not
     // possible to support ES3 on these devices, there is no need for the workaround to begin with
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h
@@ -60,17 +60,17 @@ D3D11_QUERY ConvertQueryType(GLenum quer
 
 namespace d3d11_gl
 {
 
 unsigned int GetReservedVertexUniformVectors(D3D_FEATURE_LEVEL featureLevel);
 
 unsigned int GetReservedFragmentUniformVectors(D3D_FEATURE_LEVEL featureLevel);
 
-GLint GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel);
+gl::Version GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel);
 void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, const Renderer11DeviceCaps &renderer11DeviceCaps, gl::Caps *caps,
                   gl::TextureCapsMap *textureCapsMap, gl::Extensions *extensions, gl::Limitations *limitations);
 
 }  // namespace d3d11_gl
 
 namespace d3d11
 {
 
@@ -130,16 +130,22 @@ void SetPositionDepthColorVertex(Positio
     vertex->r = color.red;
     vertex->g = color.green;
     vertex->b = color.blue;
     vertex->a = color.alpha;
 }
 
 HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name);
 
+template <typename T>
+HRESULT SetDebugName(angle::ComPtr<T> &resource, const char *name)
+{
+    return SetDebugName(resource.Get(), name);
+}
+
 template <typename outType>
 outType* DynamicCastComObject(IUnknown* object)
 {
     outType *outObject = NULL;
     HRESULT result = object->QueryInterface(__uuidof(outType), reinterpret_cast<void**>(&outObject));
     if (SUCCEEDED(result))
     {
         return outObject;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_table_utils.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_table_utils.h
@@ -30,17 +30,17 @@ inline bool OnlyFL9_3(const Renderer11De
 
 inline bool SupportsFormat(DXGI_FORMAT format, const Renderer11DeviceCaps &deviceCaps)
 {
     // Must support texture, SRV and RTV support
     UINT mustSupport = D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_TEXTURECUBE |
                        D3D11_FORMAT_SUPPORT_SHADER_SAMPLE | D3D11_FORMAT_SUPPORT_MIP |
                        D3D11_FORMAT_SUPPORT_RENDER_TARGET;
 
-    if (d3d11_gl::GetMaximumClientVersion(deviceCaps.featureLevel) > 2)
+    if (d3d11_gl::GetMaximumClientVersion(deviceCaps.featureLevel).major > 2)
     {
         mustSupport |= D3D11_FORMAT_SUPPORT_TEXTURE3D;
     }
 
     bool fullSupport = false;
     if (format == DXGI_FORMAT_B5G6R5_UNORM)
     {
         // All hardware that supports DXGI_FORMAT_B5G6R5_UNORM should support autogen mipmaps, but
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Blit9.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Blit9.cpp
@@ -2,50 +2,59 @@
 // 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.
 //
 
 // Blit9.cpp: Surface copy utility class.
 
 #include "libANGLE/renderer/d3d/d3d9/Blit9.h"
+
+#include "libANGLE/renderer/d3d/TextureD3D.h"
 #include "libANGLE/renderer/d3d/d3d9/renderer9_utils.h"
 #include "libANGLE/renderer/d3d/d3d9/formatutils9.h"
 #include "libANGLE/renderer/d3d/d3d9/TextureStorage9.h"
 #include "libANGLE/renderer/d3d/d3d9/RenderTarget9.h"
 #include "libANGLE/renderer/d3d/d3d9/Renderer9.h"
 #include "libANGLE/angletypes.h"
 #include "libANGLE/Framebuffer.h"
 #include "libANGLE/FramebufferAttachment.h"
 
 namespace
 {
 // Precompiled shaders
 #include "libANGLE/renderer/d3d/d3d9/shaders/compiled/standardvs.h"
-#include "libANGLE/renderer/d3d/d3d9/shaders/compiled/flipyvs.h"
 #include "libANGLE/renderer/d3d/d3d9/shaders/compiled/passthroughps.h"
 #include "libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceps.h"
+#include "libANGLE/renderer/d3d/d3d9/shaders/compiled/luminancepremultps.h"
+#include "libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceunmultps.h"
 #include "libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskps.h"
+#include "libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskpremultps.h"
+#include "libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskunmultps.h"
 
-const BYTE* const g_shaderCode[] =
-{
+const BYTE *const g_shaderCode[] = {
     g_vs20_standardvs,
-    g_vs20_flipyvs,
     g_ps20_passthroughps,
     g_ps20_luminanceps,
-    g_ps20_componentmaskps
+    g_ps20_luminancepremultps,
+    g_ps20_luminanceunmultps,
+    g_ps20_componentmaskps,
+    g_ps20_componentmaskpremultps,
+    g_ps20_componentmaskunmultps,
 };
 
-const size_t g_shaderSize[] =
-{
+const size_t g_shaderSize[] = {
     sizeof(g_vs20_standardvs),
-    sizeof(g_vs20_flipyvs),
     sizeof(g_ps20_passthroughps),
     sizeof(g_ps20_luminanceps),
-    sizeof(g_ps20_componentmaskps)
+    sizeof(g_ps20_luminancepremultps),
+    sizeof(g_ps20_luminanceunmultps),
+    sizeof(g_ps20_componentmaskps),
+    sizeof(g_ps20_componentmaskpremultps),
+    sizeof(g_ps20_componentmaskunmultps),
 };
 }
 
 namespace rx
 {
 
 Blit9::Blit9(Renderer9 *renderer)
     : mRenderer(renderer),
@@ -177,38 +186,47 @@ RECT Blit9::getSurfaceRect(IDirect3DSurf
     rect.left = 0;
     rect.top = 0;
     rect.right = desc.Width;
     rect.bottom = desc.Height;
 
     return rect;
 }
 
+gl::Extents Blit9::getSurfaceSize(IDirect3DSurface9 *surface) const
+{
+    D3DSURFACE_DESC desc;
+    surface->GetDesc(&desc);
+
+    return gl::Extents(desc.Width, desc.Height, 1);
+}
+
 gl::Error Blit9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest)
 {
     ANGLE_TRY(initialize());
 
-    IDirect3DTexture9 *texture = NULL;
+    IDirect3DBaseTexture9 *texture = NULL;
     ANGLE_TRY(copySurfaceToTexture(source, getSurfaceRect(source), &texture));
 
     IDirect3DDevice9 *device = mRenderer->getDevice();
 
     saveState();
 
     device->SetTexture(0, texture);
     device->SetRenderTarget(0, dest);
 
     setVertexShader(SHADER_VS_STANDARD);
     setPixelShader(SHADER_PS_PASSTHROUGH);
 
     setCommonBlitState();
     device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
     device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
 
-    setViewport(getSurfaceRect(dest), gl::Offset(0, 0, 0));
+    setViewportAndShaderConstants(getSurfaceRect(dest), getSurfaceSize(source), gl::Offset(0, 0, 0),
+                                  false);
 
     render();
 
     SafeRelease(texture);
 
     restoreState();
 
     return gl::Error(GL_NO_ERROR);
@@ -233,17 +251,18 @@ gl::Error Blit9::copy2D(const gl::Frameb
     gl::Error error = storage9->getSurfaceLevel(GL_TEXTURE_2D, level, true, &destSurface);
     if (error.isError())
     {
         SafeRelease(source);
         return error;
     }
     ASSERT(destSurface);
 
-    gl::Error result = copy(source, sourceRect, destFormat, destOffset, destSurface);
+    gl::Error result =
+        copy(source, nullptr, sourceRect, destFormat, destOffset, destSurface, false, false, false);
 
     SafeRelease(destSurface);
     SafeRelease(source);
 
     return result;
 }
 
 gl::Error Blit9::copyCube(const gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, TextureStorage *storage, GLenum target, GLint level)
@@ -273,123 +292,225 @@ gl::Error Blit9::copyCube(const gl::Fram
     error = storage9->getSurfaceLevel(target, level, true, &destSurface);
     if (error.isError())
     {
         SafeRelease(source);
         return error;
     }
     ASSERT(destSurface);
 
-    gl::Error result = copy(source, sourceRect, destFormat, destOffset, destSurface);
+    gl::Error result =
+        copy(source, nullptr, sourceRect, destFormat, destOffset, destSurface, false, false, false);
 
     SafeRelease(destSurface);
     SafeRelease(source);
 
     return result;
 }
 
-gl::Error Blit9::copy(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, IDirect3DSurface9 *dest)
+gl::Error Blit9::copyTexture2D(const gl::Texture *source,
+                               GLint sourceLevel,
+                               const RECT &sourceRect,
+                               GLenum destFormat,
+                               const gl::Offset &destOffset,
+                               TextureStorage *storage,
+                               GLint destLevel,
+                               bool flipY,
+                               bool premultiplyAlpha,
+                               bool unmultiplyAlpha)
+{
+    ANGLE_TRY(initialize());
+
+    const TextureD3D *sourceD3D = GetImplAs<TextureD3D>(source);
+
+    TextureStorage *sourceStorage = nullptr;
+    ANGLE_TRY(const_cast<TextureD3D *>(sourceD3D)->getNativeTexture(&sourceStorage));
+
+    TextureStorage9_2D *sourceStorage9 = GetAs<TextureStorage9_2D>(sourceStorage);
+    ASSERT(sourceStorage9);
+
+    TextureStorage9_2D *destStorage9 = GetAs<TextureStorage9_2D>(storage);
+    ASSERT(destStorage9);
+
+    ASSERT(sourceLevel == 0);
+    IDirect3DBaseTexture9 *sourceTexture = nullptr;
+    ANGLE_TRY(sourceStorage9->getBaseTexture(&sourceTexture));
+
+    IDirect3DSurface9 *sourceSurface = nullptr;
+    ANGLE_TRY(sourceStorage9->getSurfaceLevel(GL_TEXTURE_2D, sourceLevel, true, &sourceSurface));
+
+    IDirect3DSurface9 *destSurface = nullptr;
+    gl::Error error = destStorage9->getSurfaceLevel(GL_TEXTURE_2D, destLevel, true, &destSurface);
+    if (error.isError())
+    {
+        SafeRelease(sourceSurface);
+        return error;
+    }
+
+    error = copy(sourceSurface, sourceTexture, sourceRect, destFormat, destOffset, destSurface,
+                 flipY, premultiplyAlpha, unmultiplyAlpha);
+
+    SafeRelease(sourceSurface);
+    SafeRelease(destSurface);
+
+    return error;
+}
+
+gl::Error Blit9::copy(IDirect3DSurface9 *source,
+                      IDirect3DBaseTexture9 *sourceTexture,
+                      const RECT &sourceRect,
+                      GLenum destFormat,
+                      const gl::Offset &destOffset,
+                      IDirect3DSurface9 *dest,
+                      bool flipY,
+                      bool premultiplyAlpha,
+                      bool unmultiplyAlpha)
 {
     ASSERT(source != NULL && dest != NULL);
 
     IDirect3DDevice9 *device = mRenderer->getDevice();
 
     D3DSURFACE_DESC sourceDesc;
     D3DSURFACE_DESC destDesc;
     source->GetDesc(&sourceDesc);
     dest->GetDesc(&destDesc);
 
-    if (sourceDesc.Format == destDesc.Format && destDesc.Usage & D3DUSAGE_RENDERTARGET &&
-        d3d9_gl::IsFormatChannelEquivalent(destDesc.Format, destFormat))   // Can use StretchRect
+    // Check if it's possible to use StetchRect
+    if (sourceDesc.Format == destDesc.Format && (destDesc.Usage & D3DUSAGE_RENDERTARGET) &&
+        d3d9_gl::IsFormatChannelEquivalent(destDesc.Format, destFormat) && !flipY &&
+        premultiplyAlpha == unmultiplyAlpha)
     {
         RECT destRect = { destOffset.x, destOffset.y, destOffset.x + (sourceRect.right - sourceRect.left), destOffset.y + (sourceRect.bottom - sourceRect.top)};
         HRESULT result = device->StretchRect(source, &sourceRect, dest, &destRect, D3DTEXF_POINT);
 
         if (FAILED(result))
         {
             ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY);
             return gl::Error(GL_OUT_OF_MEMORY, "Failed to blit between textures, StretchRect result: 0x%X.", result);
         }
 
         return gl::Error(GL_NO_ERROR);
     }
     else
     {
-        return formatConvert(source, sourceRect, destFormat, destOffset, dest);
+        IDirect3DBaseTexture9 *texture = sourceTexture;
+        RECT adjustedSourceRect        = sourceRect;
+        gl::Extents sourceSize(sourceDesc.Width, sourceDesc.Height, 1);
+
+        if (texture == nullptr)
+        {
+            ANGLE_TRY(copySurfaceToTexture(source, sourceRect, &texture));
+
+            // copySurfaceToTexture only copies in the sourceRect area of the source surface.
+            // Adjust sourceRect so that it is now covering the entire source texture
+            adjustedSourceRect.left   = 0;
+            adjustedSourceRect.right  = sourceRect.right - sourceRect.left;
+            adjustedSourceRect.top    = 0;
+            adjustedSourceRect.bottom = sourceRect.bottom - sourceRect.top;
+
+            sourceSize.width  = sourceRect.right - sourceRect.left;
+            sourceSize.height = sourceRect.bottom - sourceRect.top;
+        }
+        else
+        {
+            texture->AddRef();
+        }
+
+        gl::Error error = formatConvert(texture, adjustedSourceRect, sourceSize, destFormat,
+                                        destOffset, dest, flipY, premultiplyAlpha, unmultiplyAlpha);
+
+        SafeRelease(texture);
+
+        return error;
     }
 }
 
-gl::Error Blit9::formatConvert(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, IDirect3DSurface9 *dest)
+gl::Error Blit9::formatConvert(IDirect3DBaseTexture9 *source,
+                               const RECT &sourceRect,
+                               const gl::Extents &sourceSize,
+                               GLenum destFormat,
+                               const gl::Offset &destOffset,
+                               IDirect3DSurface9 *dest,
+                               bool flipY,
+                               bool premultiplyAlpha,
+                               bool unmultiplyAlpha)
 {
-    gl::Error error = initialize();
-    if (error.isError())
-    {
-        return error;
-    }
-
-    IDirect3DTexture9 *texture = NULL;
-    error = copySurfaceToTexture(source, sourceRect, &texture);
-    if (error.isError())
-    {
-        return error;
-    }
+    ANGLE_TRY(initialize());
 
     IDirect3DDevice9 *device = mRenderer->getDevice();
 
     saveState();
 
-    device->SetTexture(0, texture);
+    device->SetTexture(0, source);
     device->SetRenderTarget(0, dest);
 
-    setViewport(sourceRect, destOffset);
+    setViewportAndShaderConstants(sourceRect, sourceSize, destOffset, flipY);
 
     setCommonBlitState();
 
-    error = setFormatConvertShaders(destFormat);
+    gl::Error error = setFormatConvertShaders(destFormat, flipY, premultiplyAlpha, unmultiplyAlpha);
     if (!error.isError())
     {
         render();
     }
 
-    SafeRelease(texture);
-
     restoreState();
 
     return error;
 }
 
-gl::Error Blit9::setFormatConvertShaders(GLenum destFormat)
+gl::Error Blit9::setFormatConvertShaders(GLenum destFormat,
+                                         bool flipY,
+                                         bool premultiplyAlpha,
+                                         bool unmultiplyAlpha)
 {
-    gl::Error error = setVertexShader(SHADER_VS_STANDARD);
-    if (error.isError())
-    {
-        return error;
-    }
+    ANGLE_TRY(setVertexShader(SHADER_VS_STANDARD));
 
     switch (destFormat)
     {
-      default: UNREACHABLE();
       case GL_RGBA:
       case GL_BGRA_EXT:
       case GL_RGB:
       case GL_RG_EXT:
       case GL_RED_EXT:
       case GL_ALPHA:
-        error = setPixelShader(SHADER_PS_COMPONENTMASK);
-        break;
+          if (premultiplyAlpha == unmultiplyAlpha)
+          {
+              ANGLE_TRY(setPixelShader(SHADER_PS_COMPONENTMASK));
+          }
+          else if (premultiplyAlpha)
+          {
+              ANGLE_TRY(setPixelShader(SHADER_PS_COMPONENTMASK_PREMULTIPLY_ALPHA));
+          }
+          else
+          {
+              ASSERT(unmultiplyAlpha);
+              ANGLE_TRY(setPixelShader(SHADER_PS_COMPONENTMASK_UNMULTIPLY_ALPHA));
+          }
+          break;
 
       case GL_LUMINANCE:
       case GL_LUMINANCE_ALPHA:
-        error = setPixelShader(SHADER_PS_LUMINANCE);
-        break;
-    }
+          if (premultiplyAlpha == unmultiplyAlpha)
+          {
+              ANGLE_TRY(setPixelShader(SHADER_PS_LUMINANCE));
+          }
+          else if (premultiplyAlpha)
+          {
+              ANGLE_TRY(setPixelShader(SHADER_PS_LUMINANCE_PREMULTIPLY_ALPHA));
+          }
+          else
+          {
+              ASSERT(unmultiplyAlpha);
+              ANGLE_TRY(setPixelShader(SHADER_PS_LUMINANCE_UNMULTIPLY_ALPHA));
+          }
+          break;
 
-    if (error.isError())
-    {
-        return error;
+      default:
+          UNREACHABLE();
     }
 
     enum { X = 0, Y = 1, Z = 2, W = 3 };
 
     // The meaning of this constant depends on the shader that was selected.
     // See the shader assembly code above for details.
     // Allocate one array for both registers and split it into two float4's.
     float psConst[8] = { 0 };
@@ -478,17 +599,19 @@ gl::Error Blit9::setFormatConvertShaders
         break;
     }
 
     mRenderer->getDevice()->SetPixelShaderConstantF(0, psConst, 2);
 
     return gl::Error(GL_NO_ERROR);
 }
 
-gl::Error Blit9::copySurfaceToTexture(IDirect3DSurface9 *surface, const RECT &sourceRect, IDirect3DTexture9 **outTexture)
+gl::Error Blit9::copySurfaceToTexture(IDirect3DSurface9 *surface,
+                                      const RECT &sourceRect,
+                                      IDirect3DBaseTexture9 **outTexture)
 {
     ASSERT(surface);
 
     IDirect3DDevice9 *device = mRenderer->getDevice();
 
     D3DSURFACE_DESC sourceDesc;
     surface->GetDesc(&sourceDesc);
 
@@ -558,31 +681,45 @@ gl::Error Blit9::copySurfaceToTexture(ID
         SafeRelease(texture);
         return gl::Error(GL_OUT_OF_MEMORY, "Failed to copy between internal blit textures, result: 0x%X.", result);
     }
 
     *outTexture = texture;
     return gl::Error(GL_NO_ERROR);
 }
 
-void Blit9::setViewport(const RECT &sourceRect, const gl::Offset &offset)
+void Blit9::setViewportAndShaderConstants(const RECT &sourceRect,
+                                          const gl::Extents &sourceSize,
+                                          const gl::Offset &offset,
+                                          bool flipY)
 {
     IDirect3DDevice9 *device = mRenderer->getDevice();
 
     D3DVIEWPORT9 vp;
     vp.X      = offset.x;
     vp.Y      = offset.y;
     vp.Width  = sourceRect.right - sourceRect.left;
     vp.Height = sourceRect.bottom - sourceRect.top;
     vp.MinZ   = 0.0f;
     vp.MaxZ   = 1.0f;
     device->SetViewport(&vp);
 
-    float halfPixelAdjust[4] = { -1.0f/vp.Width, 1.0f/vp.Height, 0, 0 };
-    device->SetVertexShaderConstantF(0, halfPixelAdjust, 1);
+    float vertexConstants[8] = {
+        // halfPixelAdjust
+        -1.0f / vp.Width, 1.0f / vp.Height, 0, 0,
+        // texcoordOffset
+        static_cast<float>(sourceRect.left) / sourceSize.width,
+        static_cast<float>(flipY ? sourceRect.bottom : sourceRect.top) / sourceSize.height,
+        static_cast<float>(sourceRect.right - sourceRect.left) / sourceSize.width,
+        static_cast<float>(flipY ? sourceRect.top - sourceRect.bottom
+                                 : sourceRect.bottom - sourceRect.top) /
+            sourceSize.height,
+    };
+
+    device->SetVertexShaderConstantF(0, vertexConstants, 2);
 }
 
 void Blit9::setCommonBlitState()
 {
     IDirect3DDevice9 *device = mRenderer->getDevice();
 
     device->SetDepthStencilSurface(NULL);
 
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Blit9.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Blit9.h
@@ -12,16 +12,18 @@
 #include "common/angleutils.h"
 #include "libANGLE/Error.h"
 
 #include <GLES2/gl2.h>
 
 namespace gl
 {
 class Framebuffer;
+class Texture;
+struct Extents;
 struct Offset;
 }
 
 namespace rx
 {
 class Renderer9;
 class TextureStorage;
 
@@ -31,51 +33,95 @@ class Blit9 : angle::NonCopyable
     explicit Blit9(Renderer9 *renderer);
     ~Blit9();
 
     gl::Error initialize();
 
     // Copy from source surface to dest surface.
     // sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left)
     gl::Error copy2D(const gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, TextureStorage *storage, GLint level);
-    gl::Error copyCube(const gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, TextureStorage *storage, GLenum target, GLint level);
-
-    // Copy from source surface to dest surface.
-    // sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left)
-    // source is interpreted as RGBA and destFormat specifies the desired result format. For example, if destFormat = GL_RGB, the alpha channel will be forced to 0.
-    gl::Error formatConvert(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, IDirect3DSurface9 *dest);
+    gl::Error copyCube(const gl::Framebuffer *framebuffer,
+                       const RECT &sourceRect,
+                       GLenum destFormat,
+                       const gl::Offset &destOffset,
+                       TextureStorage *storage,
+                       GLenum target,
+                       GLint level);
+    gl::Error copyTexture2D(const gl::Texture *source,
+                            GLint sourceLevel,
+                            const RECT &sourceRect,
+                            GLenum destFormat,
+                            const gl::Offset &destOffset,
+                            TextureStorage *storage,
+                            GLint destLevel,
+                            bool flipY,
+                            bool premultiplyAlpha,
+                            bool unmultiplyAlpha);
 
     // 2x2 box filter sample from source to dest.
     // Requires that source is RGB(A) and dest has the same format as source.
     gl::Error boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest);
 
   private:
     Renderer9 *mRenderer;
 
     bool mGeometryLoaded;
     IDirect3DVertexBuffer9 *mQuadVertexBuffer;
     IDirect3DVertexDeclaration9 *mQuadVertexDeclaration;
 
-    gl::Error setFormatConvertShaders(GLenum destFormat);
+    // Copy from source texture to dest surface.
+    // sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left)
+    // source is interpreted as RGBA and destFormat specifies the desired result format. For
+    // example, if destFormat = GL_RGB, the alpha channel will be forced to 0.
+    gl::Error formatConvert(IDirect3DBaseTexture9 *source,
+                            const RECT &sourceRect,
+                            const gl::Extents &sourceSize,
+                            GLenum destFormat,
+                            const gl::Offset &destOffset,
+                            IDirect3DSurface9 *dest,
+                            bool flipY,
+                            bool premultiplyAlpha,
+                            bool unmultiplyAlpha);
+    gl::Error setFormatConvertShaders(GLenum destFormat,
+                                      bool flipY,
+                                      bool premultiplyAlpha,
+                                      bool unmultiplyAlpha);
 
-    gl::Error copy(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, IDirect3DSurface9 *dest);
-    gl::Error copySurfaceToTexture(IDirect3DSurface9 *surface, const RECT &sourceRect, IDirect3DTexture9 **outTexture);
-    void setViewport(const RECT &sourceRect, const gl::Offset &offset);
+    gl::Error copy(IDirect3DSurface9 *source,
+                   IDirect3DBaseTexture9 *sourceTexture,
+                   const RECT &sourceRect,
+                   GLenum destFormat,
+                   const gl::Offset &destOffset,
+                   IDirect3DSurface9 *dest,
+                   bool flipY,
+                   bool premultiplyAlpha,
+                   bool unmultiplyAlpha);
+    gl::Error copySurfaceToTexture(IDirect3DSurface9 *surface,
+                                   const RECT &sourceRect,
+                                   IDirect3DBaseTexture9 **outTexture);
+    void setViewportAndShaderConstants(const RECT &sourceRect,
+                                       const gl::Extents &sourceSize,
+                                       const gl::Offset &offset,
+                                       bool flipY);
     void setCommonBlitState();
     RECT getSurfaceRect(IDirect3DSurface9 *surface) const;
+    gl::Extents getSurfaceSize(IDirect3DSurface9 *surface) const;
 
     // This enum is used to index mCompiledShaders and mShaderSource.
     enum ShaderId
     {
         SHADER_VS_STANDARD,
-        SHADER_VS_FLIPY,
         SHADER_PS_PASSTHROUGH,
         SHADER_PS_LUMINANCE,
+        SHADER_PS_LUMINANCE_PREMULTIPLY_ALPHA,
+        SHADER_PS_LUMINANCE_UNMULTIPLY_ALPHA,
         SHADER_PS_COMPONENTMASK,
-        SHADER_COUNT
+        SHADER_PS_COMPONENTMASK_PREMULTIPLY_ALPHA,
+        SHADER_PS_COMPONENTMASK_UNMULTIPLY_ALPHA,
+        SHADER_COUNT,
     };
 
     // This actually contains IDirect3DVertexShader9 or IDirect3DPixelShader9 casted to IUnknown.
     IUnknown *mCompiledShaders[SHADER_COUNT];
 
     template <class D3DShaderType>
     gl::Error setShader(ShaderId source, const char *profile,
                         gl::Error (Renderer9::*createShader)(const DWORD *, size_t length, D3DShaderType **outShader),
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
@@ -470,27 +470,27 @@ gl::Error Image9::copyToSurface(IDirect3
 
     return gl::Error(GL_NO_ERROR);
 }
 
 // Store the pixel rectangle designated by xoffset,yoffset,width,height with pixels stored as format/type at input
 // into the target pixel rectangle.
 gl::Error Image9::loadData(const gl::Box &area,
                            const gl::PixelUnpackState &unpack,
-                           GLenum inputType,
+                           GLenum type,
                            const void *input,
                            bool applySkipImages)
 {
     // 3D textures are not supported by the D3D9 backend.
     ASSERT(area.z == 0 && area.depth == 1);
-    ASSERT(getSizedInputFormat(inputType) == mInternalFormat);
+
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(mInternalFormat);
     GLuint inputRowPitch                 = 0;
     ANGLE_TRY_RESULT(
-        formatInfo.computeRowPitch(area.width, unpack.alignment, unpack.rowLength),
+        formatInfo.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
         inputRowPitch);
     ASSERT(!applySkipImages);
     ASSERT(unpack.skipPixels == 0);
     ASSERT(unpack.skipRows == 0);
 
     const d3d9::TextureFormat &d3dFormatInfo = d3d9::GetTextureFormatInfo(mInternalFormat);
     ASSERT(d3dFormatInfo.loadFunction != NULL);
 
@@ -518,17 +518,17 @@ gl::Error Image9::loadData(const gl::Box
 
 gl::Error Image9::loadCompressedData(const gl::Box &area, const void *input)
 {
     // 3D textures are not supported by the D3D9 backend.
     ASSERT(area.z == 0 && area.depth == 1);
 
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(mInternalFormat);
     GLsizei inputRowPitch                = 0;
-    ANGLE_TRY_RESULT(formatInfo.computeRowPitch(area.width, 1, 0), inputRowPitch);
+    ANGLE_TRY_RESULT(formatInfo.computeRowPitch(GL_UNSIGNED_BYTE, area.width, 1, 0), inputRowPitch);
     GLsizei inputDepthPitch = 0;
     ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(area.height, 0, inputDepthPitch),
                      inputDepthPitch);
 
     const d3d9::TextureFormat &d3d9FormatInfo = d3d9::GetTextureFormatInfo(mInternalFormat);
 
     ASSERT(area.x % d3d9::GetD3DFormatInfo(d3d9FormatInfo.texFormat).blockWidth == 0);
     ASSERT(area.y % d3d9::GetD3DFormatInfo(d3d9FormatInfo.texFormat).blockHeight == 0);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
@@ -2455,18 +2455,25 @@ gl::Error Renderer9::copyTexture(const g
                                  GLenum destFormat,
                                  const gl::Offset &destOffset,
                                  TextureStorage *storage,
                                  GLint destLevel,
                                  bool unpackFlipY,
                                  bool unpackPremultiplyAlpha,
                                  bool unpackUnmultiplyAlpha)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    RECT rect;
+    rect.left   = sourceRect.x;
+    rect.top    = sourceRect.y;
+    rect.right  = sourceRect.x + sourceRect.width;
+    rect.bottom = sourceRect.y + sourceRect.height;
+
+    return mBlit->copyTexture2D(source, sourceLevel, rect, destFormat, destOffset, storage,
+                                destLevel, unpackFlipY, unpackPremultiplyAlpha,
+                                unpackUnmultiplyAlpha);
 }
 
 gl::Error Renderer9::copyCompressedTexture(const gl::Texture *source,
                                            GLint sourceLevel,
                                            TextureStorage *storage,
                                            GLint destLevel)
 {
     UNIMPLEMENTED();
@@ -2614,32 +2621,36 @@ gl::Error Renderer9::compileToExecutable
                                          const std::vector<D3DVarying> &streamOutVaryings,
                                          bool separatedOutputBuffers,
                                          const D3DCompilerWorkarounds &workarounds,
                                          ShaderExecutableD3D **outExectuable)
 {
     // Transform feedback is not supported in ES2 or D3D9
     ASSERT(streamOutVaryings.empty());
 
-    const char *profileType = NULL;
+    std::stringstream profileStream;
+
     switch (type)
     {
-      case SHADER_VERTEX:
-        profileType = "vs";
-        break;
-      case SHADER_PIXEL:
-        profileType = "ps";
-        break;
-      default:
-        UNREACHABLE();
-        return gl::Error(GL_INVALID_OPERATION);
+        case SHADER_VERTEX:
+            profileStream << "vs";
+            break;
+        case SHADER_PIXEL:
+            profileStream << "ps";
+            break;
+        default:
+            UNREACHABLE();
+            return gl::Error(GL_INVALID_OPERATION);
     }
-    unsigned int profileMajorVersion = (getMajorShaderModel() >= 3) ? 3 : 2;
-    unsigned int profileMinorVersion = 0;
-    std::string profile = FormatString("%s_%u_%u", profileType, profileMajorVersion, profileMinorVersion);
+
+    profileStream << "_" << ((getMajorShaderModel() >= 3) ? 3 : 2);
+    profileStream << "_"
+                  << "0";
+
+    std::string profile = profileStream.str();
 
     UINT flags = ANGLE_COMPILE_OPTIMIZATION_LEVEL;
 
     if (workarounds.skipOptimization)
     {
         flags = D3DCOMPILE_SKIP_OPTIMIZATION;
     }
     else if (workarounds.useMaxOptimization)
@@ -2691,16 +2702,21 @@ gl::Error Renderer9::compileToExecutable
     if (!debugInfo.empty())
     {
         (*outExectuable)->appendDebugInfo(debugInfo);
     }
 
     return gl::Error(GL_NO_ERROR);
 }
 
+gl::Error Renderer9::ensureHLSLCompilerInitialized()
+{
+    return mCompiler.ensureInitialized();
+}
+
 UniformStorageD3D *Renderer9::createUniformStorage(size_t storageSize)
 {
     return new UniformStorageD3D(storageSize);
 }
 
 gl::Error Renderer9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest)
 {
     return mBlit->boxFilter(source, dest);
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.h
@@ -242,16 +242,18 @@ class Renderer9 : public RendererD3D
                              ShaderExecutableD3D **outExecutable) override;
     gl::Error compileToExecutable(gl::InfoLog &infoLog,
                                   const std::string &shaderHLSL,
                                   ShaderType type,
                                   const std::vector<D3DVarying> &streamOutVaryings,
                                   bool separatedOutputBuffers,
                                   const D3DCompilerWorkarounds &workarounds,
                                   ShaderExecutableD3D **outExectuable) override;
+    gl::Error ensureHLSLCompilerInitialized() override;
+
     UniformStorageD3D *createUniformStorage(size_t storageSize) override;
 
     // Image operations
     ImageD3D *createImage() override;
     gl::Error generateMipmap(ImageD3D *dest, ImageD3D *source) override;
     gl::Error generateMipmapUsingD3D(TextureStorage *storage,
                                      const gl::TextureState &textureState) override;
     TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain) override;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
@@ -590,16 +590,17 @@ void GenerateCaps(IDirect3D9 *d3d9,
     extensions->discardFramebuffer = false; // It would be valid to set this to true, since glDiscardFramebufferEXT is just a hint
     extensions->colorBufferFloat = false;
     extensions->debugMarker = true;
     extensions->eglImage               = true;
     extensions->eglImageExternal       = true;
     extensions->unpackSubimage         = true;
     extensions->packSubimage           = true;
     extensions->syncQuery              = extensions->fence;
+    extensions->copyTexture            = true;
 
     // D3D9 has no concept of separate masks and refs for front and back faces in the depth stencil
     // state.
     limitations->noSeparateStencilRefsAndMasks = true;
 
     // D3D9 shader models have limited support for looping, so the Appendix A
     // index/loop limitations are necessary. Workarounds that are needed to
     // support dynamic indexing of vectors on HLSL also don't work on D3D9.
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
@@ -19,15 +19,49 @@ float4 passthroughps(float4 texcoord : T
 // Luminance Conversion Pixel Shader
 // Performs a mad operation using the LA data from the texture with mult.xw and add.xw.
 // Returns data in the form of llla
 float4 luminanceps(float4 texcoord : TEXCOORD0) : COLOR
 {
     return (tex2D(tex, texcoord.xy).xw * mult.xw + add.xw).xxxy;
 };
 
+float4 luminancepremultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+    float4 luma = (tex2D(tex, texcoord.xy).xw * mult.xw + add.xw).xxxy;
+    luma.rgb *= luma.a;
+    return luma;
+};
+
+float4 luminanceunmultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+    float4 luma = (tex2D(tex, texcoord.xy).xw * mult.xw + add.xw).xxxy;
+    if (luma.a > 0.0f)
+    {
+        luma.rgb /= luma.a;
+    }
+    return luma;
+};
+
 // RGB/A Component Mask Pixel Shader
 // Performs a mad operation using the texture's RGBA data with mult.xyzw and add.xyzw.
 // Returns data in the form of rgba
 float4 componentmaskps(float4 texcoord : TEXCOORD0) : COLOR
 {
     return tex2D(tex, texcoord.xy) * mult + add;
 };
+
+float4 componentmaskpremultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+    float4 color = tex2D(tex, texcoord.xy) * mult + add;
+    color.rgb *= color.a;
+    return color;
+};
+
+float4 componentmaskunmultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+    float4 color =  tex2D(tex, texcoord.xy) * mult + add;
+    if (color.a > 0.0f)
+    {
+        color.rgb /= color.a;
+    }
+    return color;
+};
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs
@@ -6,38 +6,24 @@
 
 struct VS_OUTPUT
 {
     float4 position : POSITION;
     float4 texcoord : TEXCOORD0;
 };
 
 uniform float4 halfPixelSize : c0;
+uniform float4 texcoordOffset : c1;
 
 // Standard Vertex Shader
 // Input 0 is the homogenous position.
 // Outputs the homogenous position as-is.
 // Outputs a tex coord with (0,0) in the upper-left corner of the screen and (1,1) in the bottom right.
 // C0.X must be negative half-pixel width, C0.Y must be half-pixel height. C0.ZW must be 0.
 VS_OUTPUT standardvs(in float4 position : POSITION)
 {
     VS_OUTPUT Out;
 
     Out.position = position + halfPixelSize;
-    Out.texcoord = position * float4(0.5, -0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0);
+    Out.texcoord = ((position * float4(0.5, -0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0)) * float4(texcoordOffset.zw, 1.0, 1.0)) + float4(texcoordOffset.xy, 0, 0);
 
     return Out;
 };
-
-// Flip Y Vertex Shader
-// Input 0 is the homogenous position.
-// Outputs the homogenous position as-is.
-// Outputs a tex coord with (0,1) in the upper-left corner of the screen and (1,0) in the bottom right.
-// C0.XY must be the half-pixel width and height. C0.ZW must be 0.
-VS_OUTPUT flipyvs(in float4 position : POSITION)
-{
-    VS_OUTPUT Out;
-
-    Out.position = position + halfPixelSize;
-    Out.texcoord = position * float4(0.5, 0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0);
-
-    return Out;
-};
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskpremultps.h
@@ -0,0 +1,50 @@
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+//
+// Parameters:
+//
+//   float4 add;
+//   float4 mult;
+//   sampler2D tex;
+//
+//
+// Registers:
+//
+//   Name         Reg   Size
+//   ------------ ----- ----
+//   mult         c0       1
+//   add          c1       1
+//   tex          s0       1
+//
+
+    ps_2_0
+    dcl t0.xy
+    dcl_2d s0
+    texld r0, t0, s0
+    mov r1, c0
+    mad r0, r0, r1, c1
+    mul r0.xyz, r0.w, r0
+    mov oC0, r0
+
+// approximately 5 instruction slots used (1 texture, 4 arithmetic)
+#endif
+
+const BYTE g_ps20_componentmaskpremultps[] = {
+    0,   2,   255, 255, 254, 255, 50,  0,   67,  84,  65,  66,  28,  0,   0,   0,   143, 0,   0,
+    0,   0,   2,   255, 255, 3,   0,   0,   0,   28,  0,   0,   0,   0,   1,   0,   0,   136, 0,
+    0,   0,   88,  0,   0,   0,   2,   0,   1,   0,   1,   0,   0,   0,   92,  0,   0,   0,   0,
+    0,   0,   0,   108, 0,   0,   0,   2,   0,   0,   0,   1,   0,   0,   0,   92,  0,   0,   0,
+    0,   0,   0,   0,   113, 0,   0,   0,   3,   0,   0,   0,   1,   0,   0,   0,   120, 0,   0,
+    0,   0,   0,   0,   0,   97,  100, 100, 0,   1,   0,   3,   0,   1,   0,   4,   0,   1,   0,
+    0,   0,   0,   0,   0,   0,   109, 117, 108, 116, 0,   116, 101, 120, 0,   171, 171, 171, 4,
+    0,   12,  0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   112, 115, 95,  50,
+    95,  48,  0,   77,  105, 99,  114, 111, 115, 111, 102, 116, 32,  40,  82,  41,  32,  72,  76,
+    83,  76,  32,  83,  104, 97,  100, 101, 114, 32,  67,  111, 109, 112, 105, 108, 101, 114, 32,
+    54,  46,  51,  46,  57,  54,  48,  48,  46,  49,  54,  51,  56,  52,  0,   171, 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,   1,   0,   15,  128, 0,   0,   228, 160, 4,   0,   0,   4,   0,   0,
+    15,  128, 0,   0,   228, 128, 1,   0,   228, 128, 1,   0,   228, 160, 5,   0,   0,   3,   0,
+    0,   7,   128, 0,   0,   255, 128, 0,   0,   228, 128, 1,   0,   0,   2,   0,   8,   15,  128,
+    0,   0,   228, 128, 255, 255, 0,   0};
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskunmultps.h
@@ -0,0 +1,54 @@
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+//
+// Parameters:
+//
+//   float4 add;
+//   float4 mult;
+//   sampler2D tex;
+//
+//
+// Registers:
+//
+//   Name         Reg   Size
+//   ------------ ----- ----
+//   mult         c0       1
+//   add          c1       1
+//   tex          s0       1
+//
+
+    ps_2_0
+    dcl t0.xy
+    dcl_2d s0
+    texld r0, t0, s0
+    mov r1, c0
+    mad r0, r0, r1, c1
+    rcp r1.x, r0.w
+    mul r1.xyz, r0, r1.x
+    cmp r0.xyz, -r0.w, r0, r1
+    mov oC0, r0
+
+// approximately 7 instruction slots used (1 texture, 6 arithmetic)
+#endif
+
+const BYTE g_ps20_componentmaskunmultps[] = {
+    0,   2,   255, 255, 254, 255, 50,  0,   67,  84,  65,  66,  28,  0,   0,   0,   143, 0,   0,
+    0,   0,   2,   255, 255, 3,   0,   0,   0,   28,  0,   0,   0,   0,   1,   0,   0,   136, 0,
+    0,   0,   88,  0,   0,   0,   2,   0,   1,   0,   1,   0,   0,   0,   92,  0,   0,   0,   0,
+    0,   0,   0,   108, 0,   0,   0,   2,   0,   0,   0,   1,   0,   0,   0,   92,  0,   0,   0,
+    0,   0,   0,   0,   113, 0,   0,   0,   3,   0,   0,   0,   1,   0,   0,   0,   120, 0,   0,
+    0,   0,   0,   0,   0,   97,  100, 100, 0,   1,   0,   3,   0,   1,   0,   4,   0,   1,   0,
+    0,   0,   0,   0,   0,   0,   109, 117, 108, 116, 0,   116, 101, 120, 0,   171, 171, 171, 4,
+    0,   12,  0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   112, 115, 95,  50,
+    95,  48,  0,   77,  105, 99,  114, 111, 115, 111, 102, 116, 32,  40,  82,  41,  32,  72,  76,
+    83,  76,  32,  83,  104, 97,  100, 101, 114, 32,  67,  111, 109, 112, 105, 108, 101, 114, 32,
+    54,  46,  51,  46,  57,  54,  48,  48,  46,  49,  54,  51,  56,  52,  0,   171, 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,   1,   0,   15,  128, 0,   0,   228, 160, 4,   0,   0,   4,   0,   0,
+    15,  128, 0,   0,   228, 128, 1,   0,   228, 128, 1,   0,   228, 160, 6,   0,   0,   2,   1,
+    0,   1,   128, 0,   0,   255, 128, 5,   0,   0,   3,   1,   0,   7,   128, 0,   0,   228, 128,
+    1,   0,   0,   128, 88,  0,   0,   4,   0,   0,   7,   128, 0,   0,   255, 129, 0,   0,   228,
+    128, 1,   0,   228, 128, 1,   0,   0,   2,   0,   8,   15,  128, 0,   0,   228, 128, 255, 255,
+    0,   0};
deleted file mode 100755
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/flipyvs.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
-//
-// Parameters:
-//
-//   float4 halfPixelSize;
-//
-//
-// Registers:
-//
-//   Name          Reg   Size
-//   ------------- ----- ----
-//   halfPixelSize c0       1
-//
-
-    vs_2_0
-    def c1, 0.5, 1, 0, 0
-    dcl_position v0
-    add oPos, v0, c0
-    mad oT0, v0, c1.xxyy, c1.xxzz
-
-// approximately 2 instruction slots used
-#endif
-
-const BYTE g_vs20_flipyvs[] =
-{
-      0,   2, 254, 255, 254, 255, 
-     36,   0,  67,  84,  65,  66, 
-     28,   0,   0,   0,  87,   0, 
-      0,   0,   0,   2, 254, 255, 
-      1,   0,   0,   0,  28,   0, 
-      0,   0,   0,   1,   0,   0, 
-     80,   0,   0,   0,  48,   0, 
-      0,   0,   2,   0,   0,   0, 
-      1,   0,   0,   0,  64,   0, 
-      0,   0,   0,   0,   0,   0, 
-    104,  97, 108, 102,  80, 105, 
-    120, 101, 108,  83, 105, 122, 
-    101,   0, 171, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0, 118, 115,  95,  50, 
-     95,  48,   0,  77, 105,  99, 
-    114, 111, 115, 111, 102, 116, 
-     32,  40,  82,  41,  32,  72, 
-     76,  83,  76,  32,  83, 104, 
-     97, 100, 101, 114,  32,  67, 
-    111, 109, 112, 105, 108, 101, 
-    114,  32,  54,  46,  51,  46, 
-     57,  54,  48,  48,  46,  49, 
-     54,  51,  56,  52,   0, 171, 
-    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
-};
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminancepremultps.h
@@ -0,0 +1,54 @@
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+//
+// Parameters:
+//
+//   float4 add;
+//   float4 mult;
+//   sampler2D tex;
+//
+//
+// Registers:
+//
+//   Name         Reg   Size
+//   ------------ ----- ----
+//   mult         c0       1
+//   add          c1       1
+//   tex          s0       1
+//
+
+    ps_2_0
+    dcl t0.xy
+    dcl_2d s0
+    texld r0, t0, s0
+    mov r1.xw, c0
+    mad r0.x, r0.x, r1.x, c1.x
+    mad r0.y, r0.w, r1.w, c1.w
+    mul r1.xyz, r0.y, r0.x
+    mov r1.w, r0.y
+    mov oC0, r1
+
+// approximately 7 instruction slots used (1 texture, 6 arithmetic)
+#endif
+
+const BYTE g_ps20_luminancepremultps[] = {
+    0,   2,   255, 255, 254, 255, 50,  0,   67,  84,  65,  66,  28,  0,   0,   0,   143, 0,   0,
+    0,   0,   2,   255, 255, 3,   0,   0,   0,   28,  0,   0,   0,   0,   1,   0,   0,   136, 0,
+    0,   0,   88,  0,   0,   0,   2,   0,   1,   0,   1,   0,   0,   0,   92,  0,   0,   0,   0,
+    0,   0,   0,   108, 0,   0,   0,   2,   0,   0,   0,   1,   0,   0,   0,   92,  0,   0,   0,
+    0,   0,   0,   0,   113, 0,   0,   0,   3,   0,   0,   0,   1,   0,   0,   0,   120, 0,   0,
+    0,   0,   0,   0,   0,   97,  100, 100, 0,   1,   0,   3,   0,   1,   0,   4,   0,   1,   0,
+    0,   0,   0,   0,   0,   0,   109, 117, 108, 116, 0,   116, 101, 120, 0,   171, 171, 171, 4,
+    0,   12,  0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   112, 115, 95,  50,
+    95,  48,  0,   77,  105, 99,  114, 111, 115, 111, 102, 116, 32,  40,  82,  41,  32,  72,  76,
+    83,  76,  32,  83,  104, 97,  100, 101, 114, 32,  67,  111, 109, 112, 105, 108, 101, 114, 32,
+    54,  46,  51,  46,  57,  54,  48,  48,  46,  49,  54,  51,  56,  52,  0,   171, 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,   1,   0,   9,   128, 0,   0,   228, 160, 4,   0,   0,   4,   0,   0,
+    1,   128, 0,   0,   0,   128, 1,   0,   0,   128, 1,   0,   0,   160, 4,   0,   0,   4,   0,
+    0,   2,   128, 0,   0,   255, 128, 1,   0,   255, 128, 1,   0,   255, 160, 5,   0,   0,   3,
+    1,   0,   7,   128, 0,   0,   85,  128, 0,   0,   0,   128, 1,   0,   0,   2,   1,   0,   8,
+    128, 0,   0,   85,  128, 1,   0,   0,   2,   0,   8,   15,  128, 1,   0,   228, 128, 255, 255,
+    0,   0};
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceunmultps.h
@@ -0,0 +1,57 @@
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+//
+// Parameters:
+//
+//   float4 add;
+//   float4 mult;
+//   sampler2D tex;
+//
+//
+// Registers:
+//
+//   Name         Reg   Size
+//   ------------ ----- ----
+//   mult         c0       1
+//   add          c1       1
+//   tex          s0       1
+//
+
+    ps_2_0
+    dcl t0.xy
+    dcl_2d s0
+    texld r0, t0, s0
+    mov r1.xw, c0
+    mad r0.x, r0.x, r1.x, c1.x
+    mad r0.y, r0.w, r1.w, c1.w
+    rcp r0.z, r0.y
+    mul r0.z, r0.z, r0.x
+    cmp r1.xyz, -r0.y, r0.x, r0.z
+    mov r1.w, r0.y
+    mov oC0, r1
+
+// approximately 9 instruction slots used (1 texture, 8 arithmetic)
+#endif
+
+const BYTE g_ps20_luminanceunmultps[] = {
+    0,   2,   255, 255, 254, 255, 50,  0,   67,  84,  65,  66,  28,  0,   0,   0,   143, 0,   0,
+    0,   0,   2,   255, 255, 3,   0,   0,   0,   28,  0,   0,   0,   0,   1,   0,   0,   136, 0,
+    0,   0,   88,  0,   0,   0,   2,   0,   1,   0,   1,   0,   0,   0,   92,  0,   0,   0,   0,
+    0,   0,   0,   108, 0,   0,   0,   2,   0,   0,   0,   1,   0,   0,   0,   92,  0,   0,   0,
+    0,   0,   0,   0,   113, 0,   0,   0,   3,   0,   0,   0,   1,   0,   0,   0,   120, 0,   0,
+    0,   0,   0,   0,   0,   97,  100, 100, 0,   1,   0,   3,   0,   1,   0,   4,   0,   1,   0,
+    0,   0,   0,   0,   0,   0,   109, 117, 108, 116, 0,   116, 101, 120, 0,   171, 171, 171, 4,
+    0,   12,  0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   112, 115, 95,  50,
+    95,  48,  0,   77,  105, 99,  114, 111, 115, 111, 102, 116, 32,  40,  82,  41,  32,  72,  76,
+    83,  76,  32,  83,  104, 97,  100, 101, 114, 32,  67,  111, 109, 112, 105, 108, 101, 114, 32,
+    54,  46,  51,  46,  57,  54,  48,  48,  46,  49,  54,  51,  56,  52,  0,   171, 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,   1,   0,   9,   128, 0,   0,   228, 160, 4,   0,   0,   4,   0,   0,
+    1,   128, 0,   0,   0,   128, 1,   0,   0,   128, 1,   0,   0,   160, 4,   0,   0,   4,   0,
+    0,   2,   128, 0,   0,   255, 128, 1,   0,   255, 128, 1,   0,   255, 160, 6,   0,   0,   2,
+    0,   0,   4,   128, 0,   0,   85,  128, 5,   0,   0,   3,   0,   0,   4,   128, 0,   0,   170,
+    128, 0,   0,   0,   128, 88,  0,   0,   4,   1,   0,   7,   128, 0,   0,   85,  129, 0,   0,
+    0,   128, 0,   0,   170, 128, 1,   0,   0,   2,   1,   0,   8,   128, 0,   0,   85,  128, 1,
+    0,   0,   2,   0,   8,   15,  128, 1,   0,   228, 128, 255, 255, 0,   0};
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/standardvs.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/compiled/standardvs.h
@@ -1,66 +1,46 @@
 #if 0
 //
 // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
 //
 // Parameters:
 //
 //   float4 halfPixelSize;
+//   float4 texcoordOffset;
 //
 //
 // Registers:
 //
-//   Name          Reg   Size
-//   ------------- ----- ----
-//   halfPixelSize c0       1
+//   Name           Reg   Size
+//   -------------- ----- ----
+//   halfPixelSize  c0       1
+//   texcoordOffset c1       1
 //
 
     vs_2_0
-    def c1, 0.5, -0.5, 1, 0
+    def c2, 0.5, -0.5, 1, 0
     dcl_position v0
     add oPos, v0, c0
-    mad oT0, v0, c1.xyzz, c1.xxww
+    mad r0, v0, c2.xyzz, c2.xxww
+    mov oT0.zw, r0
+    mad oT0.xy, r0, c1.zwzw, c1
 
-// approximately 2 instruction slots used
+// approximately 4 instruction slots used
 #endif
 
-const BYTE g_vs20_standardvs[] =
-{
-      0,   2, 254, 255, 254, 255, 
-     36,   0,  67,  84,  65,  66, 
-     28,   0,   0,   0,  87,   0, 
-      0,   0,   0,   2, 254, 255, 
-      1,   0,   0,   0,  28,   0, 
-      0,   0,   0,   1,   0,   0, 
-     80,   0,   0,   0,  48,   0, 
-      0,   0,   2,   0,   0,   0, 
-      1,   0,   0,   0,  64,   0, 
-      0,   0,   0,   0,   0,   0, 
-    104,  97, 108, 102,  80, 105, 
-    120, 101, 108,  83, 105, 122, 
-    101,   0, 171, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0, 118, 115,  95,  50, 
-     95,  48,   0,  77, 105,  99, 
-    114, 111, 115, 111, 102, 116, 
-     32,  40,  82,  41,  32,  72, 
-     76,  83,  76,  32,  83, 104, 
-     97, 100, 101, 114,  32,  67, 
-    111, 109, 112, 105, 108, 101, 
-    114,  32,  54,  46,  51,  46, 
-     57,  54,  48,  48,  46,  49, 
-     54,  51,  56,  52,   0, 171, 
-    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
-};
+const BYTE g_vs20_standardvs[] = {
+    0,   2,   254, 255, 254, 255, 44,  0,   67,  84,  65,  66,  28,  0,   0,   0,   122, 0,   0,
+    0,   0,   2,   254, 255, 2,   0,   0,   0,   28,  0,   0,   0,   0,   1,   0,   0,   115, 0,
+    0,   0,   68,  0,   0,   0,   2,   0,   0,   0,   1,   0,   0,   0,   84,  0,   0,   0,   0,
+    0,   0,   0,   100, 0,   0,   0,   2,   0,   1,   0,   1,   0,   0,   0,   84,  0,   0,   0,
+    0,   0,   0,   0,   104, 97,  108, 102, 80,  105, 120, 101, 108, 83,  105, 122, 101, 0,   171,
+    171, 1,   0,   3,   0,   1,   0,   4,   0,   1,   0,   0,   0,   0,   0,   0,   0,   116, 101,
+    120, 99,  111, 111, 114, 100, 79,  102, 102, 115, 101, 116, 0,   118, 115, 95,  50,  95,  48,
+    0,   77,  105, 99,  114, 111, 115, 111, 102, 116, 32,  40,  82,  41,  32,  72,  76,  83,  76,
+    32,  83,  104, 97,  100, 101, 114, 32,  67,  111, 109, 112, 105, 108, 101, 114, 32,  54,  46,
+    51,  46,  57,  54,  48,  48,  46,  49,  54,  51,  56,  52,  0,   81,  0,   0,   5,   2,   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,  128, 0,   0,   228,
+    144, 2,   0,   164, 160, 2,   0,   240, 160, 1,   0,   0,   2,   0,   0,   12,  224, 0,   0,
+    228, 128, 4,   0,   0,   4,   0,   0,   3,   224, 0,   0,   228, 128, 1,   0,   238, 160, 1,
+    0,   228, 160, 255, 255, 0,   0};
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/generate_shaders.bat
+++ b/gfx/angle/src/libANGLE/renderer/d3d/d3d9/shaders/generate_shaders.bat
@@ -16,20 +16,23 @@ if "%1" == "debug" (
     set debug=1
 )
 if "%1" == "release" (
     set debug=0
 )
 
 ::              | Input file          | Entry point           | Type | Output file                        | Debug |
 call:BuildShader Blit.vs               standardvs              vs_2_0 compiled\standardvs.h                %debug%
-call:BuildShader Blit.vs               flipyvs                 vs_2_0 compiled\flipyvs.h                   %debug%
 call:BuildShader Blit.ps               passthroughps           ps_2_0 compiled\passthroughps.h             %debug%
 call:BuildShader Blit.ps               luminanceps             ps_2_0 compiled\luminanceps.h               %debug%
+call:BuildShader Blit.ps               luminancepremultps      ps_2_0 compiled\luminancepremultps.h        %debug%
+call:BuildShader Blit.ps               luminanceunmultps       ps_2_0 compiled\luminanceunmultps.h         %debug%
 call:BuildShader Blit.ps               componentmaskps         ps_2_0 compiled\componentmaskps.h           %debug%
+call:BuildShader Blit.ps               componentmaskpremultps  ps_2_0 compiled\componentmaskpremultps.h    %debug%
+call:BuildShader Blit.ps               componentmaskunmultps   ps_2_0 compiled\componentmaskunmultps.h     %debug%
 
 echo.
 
 if %successCount% GTR 0 (
    echo %successCount% shaders compiled successfully.
 )
 if %errorCount% GTR 0 (
    echo There were %errorCount% shader compilation errors.
old mode 100755
new mode 100644
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/hlsl/VaryingPacking.cpp
@@ -0,0 +1,348 @@
+//
+// Copyright 2015 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.
+//
+// VaryingPacking:
+//   Class which describes a mapping from varyings to registers in D3D
+//   for linking between shader stages.
+//
+
+#include "libANGLE/renderer/d3d/hlsl/VaryingPacking.h"
+
+#include "common/utilities.h"
+#include "compiler/translator/blocklayoutHLSL.h"
+#include "libANGLE/Program.h"
+
+namespace rx
+{
+
+// Implementation of VaryingPacking::BuiltinVarying
+VaryingPacking::BuiltinVarying::BuiltinVarying() : enabled(false), index(0), systemValue(false)
+{
+}
+
+std::string VaryingPacking::BuiltinVarying::str() const
+{
+    return (systemValue ? semantic : (semantic + Str(index)));
+}
+
+void VaryingPacking::BuiltinVarying::enableSystem(const std::string &systemValueSemantic)
+{
+    enabled     = true;
+    semantic    = systemValueSemantic;
+    systemValue = true;
+}
+
+void VaryingPacking::BuiltinVarying::enable(const std::string &semanticVal, unsigned int indexVal)
+{
+    enabled  = true;
+    semantic = semanticVal;
+    index    = indexVal;
+}
+
+// Implementation of VaryingPacking
+VaryingPacking::VaryingPacking(GLuint maxVaryingVectors)
+    : mRegisterMap(maxVaryingVectors), mBuiltinInfo(SHADER_TYPE_MAX)
+{
+}
+
+// Packs varyings into generic varying registers, using the algorithm from
+// See [OpenGL ES Shading Language 1.00 rev. 17] appendix A section 7 page 111
+// Also [OpenGL ES Shading Language 3.00 rev. 4] Section 11 page 119
+// Returns false if unsuccessful.
+bool VaryingPacking::packVarying(const PackedVarying &packedVarying)
+{
+    const auto &varying = *packedVarying.varying;
+
+    // "Non - square matrices of type matCxR consume the same space as a square matrix of type matN
+    // where N is the greater of C and R.Variables of type mat2 occupies 2 complete rows."
+    // Here we are a bit more conservative and allow packing non-square matrices more tightly.
+    // Make sure we use transposed matrix types to count registers correctly.
+    ASSERT(!varying.isStruct());
+    GLenum transposedType       = gl::TransposeMatrixType(varying.type);
+    unsigned int varyingRows    = gl::VariableRowCount(transposedType);
+    unsigned int varyingColumns = gl::VariableColumnCount(transposedType);
+
+    // "Arrays of size N are assumed to take N times the size of the base type"
+    varyingRows *= varying.elementCount();
+
+    unsigned int maxVaryingVectors = static_cast<unsigned int>(mRegisterMap.size());
+
+    // Fail if we are packing a single over-large varying.
+    if (varyingRows > maxVaryingVectors)
+    {
+        return false;
+    }
+
+    // "For 2, 3 and 4 component variables packing is started using the 1st column of the 1st row.
+    // Variables are then allocated to successive rows, aligning them to the 1st column."
+    if (varyingColumns >= 2 && varyingColumns <= 4)
+    {
+        for (unsigned int row = 0; row <= maxVaryingVectors - varyingRows; ++row)
+        {
+            if (isFree(row, 0, varyingRows, varyingColumns))
+            {
+                insert(row, 0, packedVarying);
+                return true;
+            }
+        }
+
+        // "For 2 component variables, when there are no spare rows, the strategy is switched to
+        // using the highest numbered row and the lowest numbered column where the variable will
+        // fit."
+        if (varyingColumns == 2)
+        {
+            for (unsigned int r = maxVaryingVectors - varyingRows + 1; r-- >= 1;)
+            {
+                if (isFree(r, 2, varyingRows, 2))
+                {
+                    insert(r, 2, packedVarying);
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    // "1 component variables have their own packing rule. They are packed in order of size, largest
+    // first. Each variable is placed in the column that leaves the least amount of space in the
+    // column and aligned to the lowest available rows within that column."
+    ASSERT(varyingColumns == 1);
+    unsigned int contiguousSpace[4]     = {0};
+    unsigned int bestContiguousSpace[4] = {0};
+    unsigned int totalSpace[4]          = {0};
+
+    for (unsigned int row = 0; row < maxVaryingVectors; ++row)
+    {
+        for (unsigned int column = 0; column < 4; ++column)
+        {
+            if (mRegisterMap[row][column])
+            {
+                contiguousSpace[column] = 0;
+            }
+            else
+            {
+                contiguousSpace[column]++;
+                totalSpace[column]++;
+
+                if (contiguousSpace[column] > bestContiguousSpace[column])
+                {
+                    bestContiguousSpace[column] = contiguousSpace[column];
+                }
+            }
+        }
+    }
+
+    unsigned int bestColumn = 0;
+    for (unsigned int column = 1; column < 4; ++column)
+    {
+        if (bestContiguousSpace[column] >= varyingRows &&
+            (bestContiguousSpace[bestColumn] < varyingRows ||
+             totalSpace[column] < totalSpace[bestColumn]))
+        {
+            bestColumn = column;
+        }
+    }
+
+    if (bestContiguousSpace[bestColumn] >= varyingRows)
+    {
+        for (unsigned int row = 0; row < maxVaryingVectors; row++)
+        {
+            if (isFree(row, bestColumn, varyingRows, 1))
+            {
+                for (unsigned int arrayIndex = 0; arrayIndex < varyingRows; ++arrayIndex)
+                {
+                    // If varyingRows > 1, it must be an array.
+                    PackedVaryingRegister registerInfo;
+                    registerInfo.packedVarying     = &packedVarying;
+                    registerInfo.registerRow       = row + arrayIndex;
+                    registerInfo.registerColumn    = bestColumn;
+                    registerInfo.varyingArrayIndex = arrayIndex;
+                    registerInfo.varyingRowIndex   = 0;
+                    mRegisterList.push_back(registerInfo);
+                    mRegisterMap[row + arrayIndex][bestColumn] = true;
+                }
+                break;
+            }
+        }
+        return true;
+    }
+
+    return false;
+}
+
+bool VaryingPacking::isFree(unsigned int registerRow,
+                            unsigned int registerColumn,
+                            unsigned int varyingRows,
+                            unsigned int varyingColumns) const
+{
+    for (unsigned int row = 0; row < varyingRows; ++row)
+    {
+        ASSERT(registerRow + row < mRegisterMap.size());
+        for (unsigned int column = 0; column < varyingColumns; ++column)
+        {
+            ASSERT(registerColumn + column < 4);
+            if (mRegisterMap[registerRow + row][registerColumn + column])
+            {
+                return false;
+            }
+        }
+    }
+
+    return true;
+}
+
+void VaryingPacking::insert(unsigned int registerRow,
+                            unsigned int registerColumn,
+                            const PackedVarying &packedVarying)
+{
+    unsigned int varyingRows    = 0;
+    unsigned int varyingColumns = 0;
+
+    const auto &varying = *packedVarying.varying;
+    ASSERT(!varying.isStruct());
+    GLenum transposedType = gl::TransposeMatrixType(varying.type);
+    varyingRows           = gl::VariableRowCount(transposedType);
+    varyingColumns        = gl::VariableColumnCount(transposedType);
+
+    PackedVaryingRegister registerInfo;
+    registerInfo.packedVarying  = &packedVarying;
+    registerInfo.registerColumn = registerColumn;
+
+    for (unsigned int arrayElement = 0; arrayElement < varying.elementCount(); ++arrayElement)
+    {
+        for (unsigned int varyingRow = 0; varyingRow < varyingRows; ++varyingRow)
+        {
+            registerInfo.registerRow     = registerRow + (arrayElement * varyingRows) + varyingRow;
+            registerInfo.varyingRowIndex = varyingRow;
+            registerInfo.varyingArrayIndex = arrayElement;
+            mRegisterList.push_back(registerInfo);
+
+            for (unsigned int columnIndex = 0; columnIndex < varyingColumns; ++columnIndex)
+            {
+                mRegisterMap[registerInfo.registerRow][registerColumn + columnIndex] = true;
+            }
+        }
+    }
+}
+
+// See comment on packVarying.
+bool VaryingPacking::packUserVaryings(gl::InfoLog &infoLog,
+                                      const std::vector<PackedVarying> &packedVaryings,
+                                      const std::vector<std::string> &transformFeedbackVaryings)
+{
+    std::set<std::string> uniqueVaryingNames;
+
+    // "Variables are packed into the registers one at a time so that they each occupy a contiguous
+    // subrectangle. No splitting of variables is permitted."
+    for (const PackedVarying &packedVarying : packedVaryings)
+    {
+        const auto &varying = *packedVarying.varying;
+
+        // Do not assign registers to built-in or unreferenced varyings
+        if (varying.isBuiltIn() || (!varying.staticUse && !packedVarying.isStructField()))
+        {
+            continue;
+        }
+
+        ASSERT(!varying.isStruct());
+        ASSERT(uniqueVaryingNames.count(varying.name) == 0);
+
+        if (packVarying(packedVarying))
+        {
+            uniqueVaryingNames.insert(varying.name);
+        }
+        else
+        {
+            infoLog << "Could not pack varying " << varying.name;
+            return false;
+        }
+    }
+
+    for (const std::string &transformFeedbackVaryingName : transformFeedbackVaryings)
+    {
+        if (transformFeedbackVaryingName.compare(0, 3, "gl_") == 0)
+        {
+            // do not pack builtin XFB varyings
+            continue;
+        }
+
+        bool found = false;
+        for (const PackedVarying &packedVarying : packedVaryings)
+        {
+            const auto &varying = *packedVarying.varying;
+
+            // Make sure transform feedback varyings aren't optimized out.
+            if (uniqueVaryingNames.count(transformFeedbackVaryingName) > 0)
+            {
+                found = true;
+                break;
+            }
+
+            if (transformFeedbackVaryingName == varying.name)
+            {
+                if (!packVarying(packedVarying))
+                {
+                    infoLog << "Could not pack varying " << varying.name;
+                    return false;
+                }
+
+                found = true;
+                break;
+            }
+        }
+
+        if (!found)
+        {
+            infoLog << "Transform feedback varying " << transformFeedbackVaryingName
+                    << " does not exist in the vertex shader.";
+            return false;
+        }
+    }
+
+    // Sort the packed register list
+    std::sort(mRegisterList.begin(), mRegisterList.end());
+
+    // Assign semantic indices
+    for (unsigned int semanticIndex = 0;
+         semanticIndex < static_cast<unsigned int>(mRegisterList.size()); ++semanticIndex)
+    {
+        mRegisterList[semanticIndex].semanticIndex = semanticIndex;
+    }
+
+    return true;
+}
+
+bool VaryingPacking::validateBuiltins() const
+{
+    return (static_cast<size_t>(getRegisterCount()) <= mRegisterMap.size());
+}
+
+unsigned int VaryingPacking::getRegisterCount() const
+{
+    unsigned int count = 0;
+
+    for (const Register &reg : mRegisterMap)
+    {
+        if (reg.data[0] || reg.data[1] || reg.data[2] || reg.data[3])
+        {
+            ++count;
+        }
+    }
+
+    if (mBuiltinInfo[SHADER_PIXEL].glFragCoord.enabled)
+    {
+        ++count;
+    }
+
+    if (mBuiltinInfo[SHADER_PIXEL].glPointCoord.enabled)
+    {
+        ++count;
+    }
+
+    return count;
+}
+
+}  // namespace rx
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/hlsl/VaryingPacking.h
@@ -0,0 +1,185 @@
+//
+// Copyright 2015 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.
+//
+// VaryingPacking:
+//   Class which describes a mapping from varyings to registers in D3D
+//   for linking between shader stages.
+//
+
+#ifndef LIBANGLE_RENDERER_D3D_HLSL_VARYINGPACKING_H_
+#define LIBANGLE_RENDERER_D3D_HLSL_VARYINGPACKING_H_
+
+#include <GLSLANG/ShaderVars.h>
+
+#include "angle_gl.h"
+#include "common/angleutils.h"
+#include "libANGLE/renderer/d3d/hlsl/hlsl_utils.h"
+
+namespace gl
+{
+class InfoLog;
+}
+
+namespace rx
+{
+struct PackedVarying
+{
+    PackedVarying(const sh::ShaderVariable &varyingIn, sh::InterpolationType interpolationIn)
+        : varying(&varyingIn), vertexOnly(false), interpolation(interpolationIn)
+    {
+    }
+    PackedVarying(const sh::ShaderVariable &varyingIn,
+                  sh::InterpolationType interpolationIn,
+                  const std::string &parentStructNameIn)
+        : varying(&varyingIn),
+          vertexOnly(false),
+          interpolation(interpolationIn),
+          parentStructName(parentStructNameIn)
+    {
+    }
+
+    bool isStructField() const { return !parentStructName.empty(); }
+
+    const sh::ShaderVariable *varying;
+
+    // Transform feedback varyings can be only referenced in the VS.
+    bool vertexOnly;
+
+    // Cached so we can store sh::ShaderVariable to point to varying fields.
+    sh::InterpolationType interpolation;
+
+    // Struct name
+    std::string parentStructName;
+};
+
+struct PackedVaryingRegister final
+{
+    PackedVaryingRegister()
+        : packedVarying(nullptr),
+          varyingArrayIndex(0),
+          varyingRowIndex(0),
+          registerRow(0),
+          registerColumn(0)
+    {
+    }
+
+    PackedVaryingRegister(const PackedVaryingRegister &) = default;
+    PackedVaryingRegister &operator=(const PackedVaryingRegister &) = default;
+
+    bool operator<(const PackedVaryingRegister &other) const
+    {
+        return sortOrder() < other.sortOrder();
+    }
+
+    unsigned int sortOrder() const
+    {
+        // TODO(jmadill): Handle interpolation types
+        return registerRow * 4 + registerColumn;
+    }
+
+    bool isStructField() const { return !structFieldName.empty(); }
+
+    // Index to the array of varyings.
+    const PackedVarying *packedVarying;
+
+    // The array element of the packed varying.
+    unsigned int varyingArrayIndex;
+
+    // The row of the array element of the packed varying.
+    unsigned int varyingRowIndex;
+
+    // The register row to which we've assigned this packed varying.
+    unsigned int registerRow;
+
+    // The column of the register row into which we've packed this varying.
+    unsigned int registerColumn;
+
+    // Assigned after packing
+    unsigned int semanticIndex;
+
+    // Struct member this varying corresponds to.
+    std::string structFieldName;
+};
+
+class VaryingPacking final : angle::NonCopyable
+{
+  public:
+    VaryingPacking(GLuint maxVaryingVectors);
+
+    bool packUserVaryings(gl::InfoLog &infoLog,
+                          const std::vector<PackedVarying> &packedVaryings,
+                          const std::vector<std::string> &transformFeedbackVaryings);
+
+    // Some built-in varyings require emulation that eats up available registers. This method
+    // checks that we're within the register limits of the implementation.
+    bool validateBuiltins() const;
+
+    struct Register
+    {
+        Register() { data[0] = data[1] = data[2] = data[3] = false; }
+
+        bool &operator[](unsigned int index) { return data[index]; }
+        bool operator[](unsigned int index) const { return data[index]; }
+
+        bool data[4];
+    };
+
+    Register &operator[](unsigned int index) { return mRegisterMap[index]; }
+    const Register &operator[](unsigned int index) const { return mRegisterMap[index]; }
+
+    const std::vector<PackedVaryingRegister> &getRegisterList() const { return mRegisterList; }
+    unsigned int getMaxSemanticIndex() const
+    {
+        return static_cast<unsigned int>(mRegisterList.size());
+    }
+    unsigned int getRegisterCount() const;
+
+    struct BuiltinVarying final : angle::NonCopyable
+    {
+        BuiltinVarying();
+
+        std::string str() const;
+        void enableSystem(const std::string &systemValueSemantic);
+        void enable(const std::string &semanticVal, unsigned int indexVal);
+
+        bool enabled;
+        std::string semantic;
+        unsigned int index;
+        bool systemValue;
+    };
+
+    struct BuiltinInfo
+    {
+        BuiltinVarying dxPosition;
+        BuiltinVarying glPosition;
+        BuiltinVarying glFragCoord;
+        BuiltinVarying glPointCoord;
+        BuiltinVarying glPointSize;
+    };
+
+    const BuiltinInfo &builtins(ShaderType shaderType) const { return mBuiltinInfo[shaderType]; }
+    BuiltinInfo &builtins(ShaderType shaderType) { return mBuiltinInfo[shaderType]; }
+
+    bool usesPointSize() const { return mBuiltinInfo[SHADER_VERTEX].glPointSize.enabled; }
+
+  private:
+    bool packVarying(const PackedVarying &packedVarying);
+    bool isFree(unsigned int registerRow,
+                unsigned int registerColumn,
+                unsigned int varyingRows,
+                unsigned int varyingColumns) const;
+    void insert(unsigned int registerRow,
+                unsigned int registerColumn,
+                const PackedVarying &packedVarying);
+
+    std::vector<Register> mRegisterMap;
+    std::vector<PackedVaryingRegister> mRegisterList;
+
+    std::vector<BuiltinInfo> mBuiltinInfo;
+};
+
+}  // namespace rx
+
+#endif  // LIBANGLE_RENDERER_D3D_HLSL_VARYINGPACKING_H_
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/d3d/hlsl/hlsl_utils.h
@@ -0,0 +1,33 @@
+//
+// Copyright 2015 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.
+//
+// hlsl_utils: Helper functions for HLSL.
+
+#ifndef LIBANGLE_RENDERER_D3D_HLSL_HLSL_UTILS_H_
+#define LIBANGLE_RENDERER_D3D_HLSL_HLSL_UTILS_H_
+
+#include <string>
+
+namespace rx
+{
+
+enum ShaderType
+{
+    SHADER_VERTEX,
+    SHADER_PIXEL,
+    SHADER_GEOMETRY,
+    SHADER_TYPE_MAX
+};
+
+inline std::string GetVaryingSemantic(int majorShaderModel, bool programUsesPointSize)
+{
+    // SM3 reserves the TEXCOORD semantic for point sprite texcoords (gl_PointCoord)
+    // In D3D11 we manually compute gl_PointCoord in the GS.
+    return ((programUsesPointSize && majorShaderModel < 4) ? "COLOR" : "TEXCOORD");
+}
+
+}  // namespace rx
+
+#endif  // LIBANGLE_RENDERER_D3D_HLSL_HLSL_UTILS_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/BlitGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/BlitGL.cpp
@@ -3,32 +3,39 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
 
 // BlitGL.cpp: Implements the BlitGL class, a helper for blitting textures
 
 #include "libANGLE/renderer/gl/BlitGL.h"
 
+#include "common/vector_utils.h"
 #include "libANGLE/formatutils.h"
 #include "libANGLE/Framebuffer.h"
 #include "libANGLE/renderer/gl/formatutilsgl.h"
 #include "libANGLE/renderer/gl/FramebufferGL.h"
 #include "libANGLE/renderer/gl/FunctionsGL.h"
 #include "libANGLE/renderer/gl/TextureGL.h"
 #include "libANGLE/renderer/gl/StateManagerGL.h"
 #include "libANGLE/renderer/gl/WorkaroundsGL.h"
 
+using angle::Vector2;
+
+namespace rx
+{
+
 namespace
 {
 
 gl::Error CheckCompileStatus(const rx::FunctionsGL *functions, GLuint shader)
 {
     GLint compileStatus = GL_FALSE;
     functions->getShaderiv(shader, GL_COMPILE_STATUS, &compileStatus);
+
     ASSERT(compileStatus == GL_TRUE);
     if (compileStatus == GL_FALSE)
     {
         return gl::Error(GL_OUT_OF_MEMORY, "Failed to compile internal blit shader.");
     }
 
     return gl::NoError();
 }
@@ -41,33 +48,86 @@ gl::Error CheckLinkStatus(const rx::Func
     if (linkStatus == GL_FALSE)
     {
         return gl::Error(GL_OUT_OF_MEMORY, "Failed to link internal blit program.");
     }
 
     return gl::NoError();
 }
 
-} // anonymous namespace
+class ScopedGLState : public angle::NonCopyable
+{
+  public:
+    enum
+    {
+        KEEP_SCISSOR = 1,
+    };
 
-namespace rx
-{
+    ScopedGLState(StateManagerGL *stateManager,
+                  const FunctionsGL *functions,
+                  gl::Rectangle viewport,
+                  int keepState = 0)
+        : mStateManager(stateManager), mFunctions(functions)
+    {
+        if (!(keepState & KEEP_SCISSOR))
+        {
+            mStateManager->setScissorTestEnabled(false);
+        }
+        mStateManager->setViewport(viewport);
+        mStateManager->setDepthRange(0.0f, 1.0f);
+        mStateManager->setBlendEnabled(false);
+        mStateManager->setColorMask(true, true, true, true);
+        mStateManager->setSampleAlphaToCoverageEnabled(false);
+        mStateManager->setSampleCoverageEnabled(false);
+        mStateManager->setDepthTestEnabled(false);
+        mStateManager->setStencilTestEnabled(false);
+        mStateManager->setCullFaceEnabled(false);
+        mStateManager->setPolygonOffsetFillEnabled(false);
+        mStateManager->setRasterizerDiscardEnabled(false);
+
+        mStateManager->pauseTransformFeedback();
+        mStateManager->pauseAllQueries();
+    }
+
+    ~ScopedGLState()
+    {
+        // XFB resuming will be done automatically
+        mStateManager->resumeAllQueries();
+    }
+
+    void willUseTextureUnit(int unit)
+    {
+        if (mFunctions->bindSampler)
+        {
+            mStateManager->bindSampler(unit, 0);
+        }
+    }
+
+  private:
+    StateManagerGL *mStateManager;
+    const FunctionsGL *mFunctions;
+};
+
+}  // anonymous namespace
 
 BlitGL::BlitGL(const FunctionsGL *functions,
                const WorkaroundsGL &workarounds,
                StateManagerGL *stateManager)
     : mFunctions(functions),
       mWorkarounds(workarounds),
       mStateManager(stateManager),
       mBlitProgram(0),
       mSourceTextureLocation(-1),
       mScaleLocation(-1),
       mOffsetLocation(-1),
+      mMultiplyAlphaLocation(-1),
+      mUnMultiplyAlphaLocation(-1),
       mScratchFBO(0),
-      mVAO(0)
+      mVAO(0),
+      mVertexBuffer(0)
 {
     for (size_t i = 0; i < ArraySize(mScratchTextures); i++)
     {
         mScratchTextures[i] = 0;
     }
 
     ASSERT(mFunctions);
     ASSERT(mStateManager);
@@ -111,16 +171,19 @@ gl::Error BlitGL::copyImageToLUMAWorkaro
                                                    const gl::Rectangle &sourceArea,
                                                    GLenum internalFormat,
                                                    const gl::Framebuffer *source)
 {
     mStateManager->bindTexture(textureType, texture);
 
     // Allocate the texture memory
     const gl::InternalFormat &internalFormatInfo = gl::GetInternalFormatInfo(internalFormat);
+
+    gl::PixelUnpackState unpack;
+    mStateManager->setPixelUnpackState(unpack);
     mFunctions->texImage2D(target, static_cast<GLint>(level), internalFormat, sourceArea.width,
                            sourceArea.height, 0, internalFormatInfo.format,
                            source->getImplementationColorReadType(), nullptr);
 
     return copySubImageToLUMAWorkaroundTexture(texture, textureType, target, lumaFormat, level,
                                                gl::Offset(0, 0, 0), sourceArea, source);
 }
 
@@ -164,48 +227,49 @@ gl::Error BlitGL::copySubImageToLUMAWork
                            sourceArea.height, 0, internalFormatInfo.format,
                            source->getImplementationColorReadType(), nullptr);
 
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
     mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
                                      mScratchTextures[1], 0);
 
     // Render to the destination texture, sampling from the scratch texture
-    mStateManager->setViewport(gl::Rectangle(0, 0, sourceArea.width, sourceArea.height));
-    mStateManager->setScissorTestEnabled(false);
-    mStateManager->setDepthRange(0.0f, 1.0f);
-    mStateManager->setBlendEnabled(false);
-    mStateManager->setColorMask(true, true, true, true);
-    mStateManager->setSampleAlphaToCoverageEnabled(false);
-    mStateManager->setSampleCoverageEnabled(false);
-    mStateManager->setDepthTestEnabled(false);
-    mStateManager->setStencilTestEnabled(false);
-    mStateManager->setCullFaceEnabled(false);
-    mStateManager->setPolygonOffsetFillEnabled(false);
-    mStateManager->setRasterizerDiscardEnabled(false);
-    mStateManager->bindTexture(GL_TEXTURE_2D, mScratchTextures[0]);
+    ScopedGLState scopedState(mStateManager, mFunctions,
+                              gl::Rectangle(0, 0, sourceArea.width, sourceArea.height));
+    scopedState.willUseTextureUnit(0);
 
     setScratchTextureParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST);
     setScratchTextureParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
     mStateManager->activeTexture(0);
     mStateManager->bindTexture(GL_TEXTURE_2D, mScratchTextures[0]);
 
     mStateManager->useProgram(mBlitProgram);
     mFunctions->uniform1i(mSourceTextureLocation, 0);
     mFunctions->uniform2f(mScaleLocation, 1.0, 1.0);
     mFunctions->uniform2f(mOffsetLocation, 0.0, 0.0);
+    mFunctions->uniform1i(mMultiplyAlphaLocation, 0);
+    mFunctions->uniform1i(mUnMultiplyAlphaLocation, 0);
 
     mStateManager->bindVertexArray(mVAO, 0);
-
     mFunctions->drawArrays(GL_TRIANGLES, 0, 3);
 
     // Copy the swizzled texture to the destination texture
     mStateManager->bindTexture(textureType, texture);
-    mFunctions->copyTexSubImage2D(target, static_cast<GLint>(level), destOffset.x, destOffset.y, 0,
-                                  0, sourceArea.width, sourceArea.height);
+
+    if (target == GL_TEXTURE_3D || target == GL_TEXTURE_2D_ARRAY)
+    {
+        mFunctions->copyTexSubImage3D(target, static_cast<GLint>(level), destOffset.x, destOffset.y,
+                                      destOffset.z, 0, 0, sourceArea.width, sourceArea.height);
+    }
+    else
+    {
+        mFunctions->copyTexSubImage2D(target, static_cast<GLint>(level), destOffset.x, destOffset.y,
+                                      0, 0, sourceArea.width, sourceArea.height);
+    }
 
     // Finally orphan the scratch textures so they can be GCed by the driver.
     orphanScratchTextures();
 
     return gl::NoError();
 }
 
 gl::Error BlitGL::blitColorBufferWithShader(const gl::Framebuffer *source,
@@ -270,209 +334,324 @@ gl::Error BlitGL::blitColorBufferWithSha
     //
     //  Then if P is the quad texcoord, Q the texcoord inside T, and R the texture texcoord:
     //    - Q = (P - D.offset) / D.size
     //    - Q = (R - T.offset) / T.size
     //  Hence R = (P - D.offset) / D.size * T.size - T.offset
     //          = P * (T.size / D.size) + (T.offset - D.offset * T.size / D.size)
 
     GLuint textureId;
-    gl::Vector2 TOffset;
-    gl::Vector2 TSize;
+    Vector2 TOffset;
+    Vector2 TSize;
 
     // TODO(cwallez) once texture dirty bits are landed, reuse attached texture instead of using
     // CopyTexImage2D
     {
         textureId = mScratchTextures[0];
-        TOffset   = gl::Vector2(0.0, 0.0);
-        TSize     = gl::Vector2(1.0, 1.0);
+        TOffset   = Vector2(0.0);
+        TSize     = Vector2(1.0);
         if (sourceArea.width < 0)
         {
-            TOffset.x = 1.0;
-            TSize.x   = -1.0;
+            TOffset.x() = 1.0;
+            TSize.x()   = -1.0;
         }
         if (sourceArea.height < 0)
         {
-            TOffset.y = 1.0;
-            TSize.y   = -1.0;
+            TOffset.y() = 1.0;
+            TSize.y()   = -1.0;
         }
 
         GLenum format                 = readAttachment->getFormat().info->internalFormat;
         const FramebufferGL *sourceGL = GetImplAs<FramebufferGL>(source);
         mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER, sourceGL->getFramebufferID());
         mStateManager->bindTexture(GL_TEXTURE_2D, textureId);
 
         mFunctions->copyTexImage2D(GL_TEXTURE_2D, 0, format, inBoundsSource.x, inBoundsSource.y,
                                    inBoundsSource.width, inBoundsSource.height, 0);
+
+        setScratchTextureParameter(GL_TEXTURE_MIN_FILTER, filter);
+        setScratchTextureParameter(GL_TEXTURE_MAG_FILTER, filter);
+        setScratchTextureParameter(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        setScratchTextureParameter(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
     }
 
     // Compute normalized sampled draw quad region
     // It is the same as the region of the source rectangle that is in bounds.
-    gl::Vector2 DOffset;
-    gl::Vector2 DSize;
+    Vector2 DOffset;
+    Vector2 DSize;
     {
         ASSERT(sourceArea.width != 0 && sourceArea.height != 0);
         gl::Rectangle orientedInBounds = inBoundsSource;
         if (sourceArea.width < 0)
         {
             orientedInBounds.x += orientedInBounds.width;
             orientedInBounds.width = -orientedInBounds.width;
         }
         if (sourceArea.height < 0)
         {
             orientedInBounds.y += orientedInBounds.height;
             orientedInBounds.height = -orientedInBounds.height;
         }
 
         DOffset =
-            gl::Vector2(static_cast<float>(orientedInBounds.x - sourceArea.x) / sourceArea.width,
-                        static_cast<float>(orientedInBounds.y - sourceArea.y) / sourceArea.height);
-        DSize = gl::Vector2(static_cast<float>(orientedInBounds.width) / sourceArea.width,
-                            static_cast<float>(orientedInBounds.height) / sourceArea.height);
+            Vector2(static_cast<float>(orientedInBounds.x - sourceArea.x) / sourceArea.width,
+                    static_cast<float>(orientedInBounds.y - sourceArea.y) / sourceArea.height);
+        DSize = Vector2(static_cast<float>(orientedInBounds.width) / sourceArea.width,
+                        static_cast<float>(orientedInBounds.height) / sourceArea.height);
     }
 
-    ASSERT(DSize.x != 0.0 && DSize.y != 0.0);
-    gl::Vector2 texCoordScale  = gl::Vector2(TSize.x / DSize.x, TSize.y / DSize.y);
-    gl::Vector2 texCoordOffset = gl::Vector2(TOffset.x - DOffset.x * texCoordScale.x,
-                                             TOffset.y - DOffset.y * texCoordScale.y);
+    ASSERT(DSize.x() != 0.0 && DSize.y() != 0.0);
+    Vector2 texCoordScale  = TSize / DSize;
+    Vector2 texCoordOffset = TOffset - DOffset * texCoordScale;
 
-    // Reset all the state except scissor and viewport
-    mStateManager->setDepthRange(0.0f, 1.0f);
-    mStateManager->setBlendEnabled(false);
-    mStateManager->setColorMask(true, true, true, true);
-    mStateManager->setSampleAlphaToCoverageEnabled(false);
-    mStateManager->setSampleCoverageEnabled(false);
-    mStateManager->setDepthTestEnabled(false);
-    mStateManager->setStencilTestEnabled(false);
-    mStateManager->setCullFaceEnabled(false);
-    mStateManager->setPolygonOffsetFillEnabled(false);
-    mStateManager->setRasterizerDiscardEnabled(false);
-
-    // Use the viewport to draw exactly to the destination rectangle
-    mStateManager->setViewport(destArea);
+    // Reset all the state except scissor and use the viewport to draw exactly to the destination
+    // rectangle
+    ScopedGLState scopedState(mStateManager, mFunctions, destArea, ScopedGLState::KEEP_SCISSOR);
+    scopedState.willUseTextureUnit(0);
 
     // Set uniforms
-    setScratchTextureParameter(GL_TEXTURE_MIN_FILTER, filter);
-    setScratchTextureParameter(GL_TEXTURE_MAG_FILTER, filter);
-    setScratchTextureParameter(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-    setScratchTextureParameter(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
     mStateManager->activeTexture(0);
-    mStateManager->bindTexture(GL_TEXTURE_2D, mScratchTextures[0]);
+    mStateManager->bindTexture(GL_TEXTURE_2D, textureId);
 
     mStateManager->useProgram(mBlitProgram);
     mFunctions->uniform1i(mSourceTextureLocation, 0);
-    mFunctions->uniform2f(mScaleLocation, texCoordScale.x, texCoordScale.y);
-    mFunctions->uniform2f(mOffsetLocation, texCoordOffset.x, texCoordOffset.y);
+    mFunctions->uniform2f(mScaleLocation, texCoordScale.x(), texCoordScale.y());
+    mFunctions->uniform2f(mOffsetLocation, texCoordOffset.x(), texCoordOffset.y());
+    mFunctions->uniform1i(mMultiplyAlphaLocation, 0);
+    mFunctions->uniform1i(mUnMultiplyAlphaLocation, 0);
 
     const FramebufferGL *destGL = GetImplAs<FramebufferGL>(dest);
     mStateManager->bindFramebuffer(GL_DRAW_FRAMEBUFFER, destGL->getFramebufferID());
 
     mStateManager->bindVertexArray(mVAO, 0);
     mFunctions->drawArrays(GL_TRIANGLES, 0, 3);
 
     return gl::NoError();
 }
 
+gl::Error BlitGL::copySubTexture(TextureGL *source,
+                                 TextureGL *dest,
+                                 const gl::Extents &sourceSize,
+                                 const gl::Rectangle &sourceArea,
+                                 const gl::Offset &destOffset,
+                                 bool needsLumaWorkaround,
+                                 GLenum lumaFormat,
+                                 bool unpackFlipY,
+                                 bool unpackPremultiplyAlpha,
+                                 bool unpackUnmultiplyAlpha)
+{
+    ANGLE_TRY(initializeResources());
+
+    // Setup the source texture
+    if (needsLumaWorkaround)
+    {
+        GLint luminance = (lumaFormat == GL_ALPHA) ? GL_ZERO : GL_RED;
+
+        GLint alpha = GL_RED;
+        if (lumaFormat == GL_LUMINANCE)
+        {
+            alpha = GL_ONE;
+        }
+        else if (lumaFormat == GL_LUMINANCE_ALPHA)
+        {
+            alpha = GL_GREEN;
+        }
+        else
+        {
+            ASSERT(lumaFormat == GL_ALPHA);
+        }
+
+        GLint swizzle[4] = {luminance, luminance, luminance, alpha};
+        source->setSwizzle(swizzle);
+    }
+    source->setMinFilter(GL_NEAREST);
+    source->setMagFilter(GL_NEAREST);
+
+    // Render to the destination texture, sampling from the source texture
+    ScopedGLState scopedState(
+        mStateManager, mFunctions,
+        gl::Rectangle(destOffset.x, destOffset.y, sourceArea.width, sourceArea.height));
+    scopedState.willUseTextureUnit(0);
+
+    mStateManager->activeTexture(0);
+    mStateManager->bindTexture(GL_TEXTURE_2D, source->getTextureID());
+
+    Vector2 scale(sourceArea.width / static_cast<float>(sourceSize.width),
+                  sourceArea.height / static_cast<float>(sourceSize.height));
+    Vector2 offset(sourceArea.x / static_cast<float>(sourceSize.width),
+                   sourceArea.y / static_cast<float>(sourceSize.height));
+    if (unpackFlipY)
+    {
+        offset.y() += scale.y();
+        scale.y() = -scale.y();
+    }
+
+    mStateManager->useProgram(mBlitProgram);
+    mFunctions->uniform1i(mSourceTextureLocation, 0);
+    mFunctions->uniform2f(mScaleLocation, scale.x(), scale.y());
+    mFunctions->uniform2f(mOffsetLocation, offset.x(), offset.y());
+    if (unpackPremultiplyAlpha == unpackUnmultiplyAlpha)
+    {
+        mFunctions->uniform1i(mMultiplyAlphaLocation, 0);
+        mFunctions->uniform1i(mUnMultiplyAlphaLocation, 0);
+    }
+    else
+    {
+        mFunctions->uniform1i(mMultiplyAlphaLocation, unpackPremultiplyAlpha);
+        mFunctions->uniform1i(mUnMultiplyAlphaLocation, unpackUnmultiplyAlpha);
+    }
+
+    mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
+    mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, dest->getTarget(),
+                                     dest->getTextureID(), 0);
+
+    mStateManager->bindVertexArray(mVAO, 0);
+    mFunctions->drawArrays(GL_TRIANGLES, 0, 3);
+
+    return gl::NoError();
+}
+
+gl::Error BlitGL::copyTexSubImage(TextureGL *source,
+                                  TextureGL *dest,
+                                  const gl::Rectangle &sourceArea,
+                                  const gl::Offset &destOffset)
+{
+    ANGLE_TRY(initializeResources());
+
+    mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
+    mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+                                     source->getTextureID(), 0);
+
+    mStateManager->bindTexture(dest->getTarget(), dest->getTextureID());
+
+    mFunctions->copyTexSubImage2D(dest->getTarget(), 0, destOffset.x, destOffset.y, sourceArea.x,
+                                  sourceArea.y, sourceArea.width, sourceArea.height);
+
+    return gl::NoError();
+}
+
 gl::Error BlitGL::initializeResources()
 {
     if (mBlitProgram == 0)
     {
         mBlitProgram = mFunctions->createProgram();
 
         // Compile the fragment shader
-        // It uses a single, large triangle, to avoid arithmetic precision issues where fragments
-        // with the same Y coordinate don't get exactly the same interpolated texcoord Y.
         const char *vsSource =
-            "#version 150\n"
-            "out vec2 v_texcoord;\n"
+            "#version 100\n"
+            "varying vec2 v_texcoord;\n"
             "uniform vec2 u_scale;\n"
             "uniform vec2 u_offset;\n"
+            "attribute vec2 a_texcoord;\n"
             "\n"
             "void main()\n"
             "{\n"
-            "    const vec2 quad_positions[3] = vec2[3]\n"
-            "    (\n"
-            "        vec2(-0.5f, 0.0f),\n"
-            "        vec2( 1.5f, 0.0f),\n"
-            "        vec2( 0.5f, 2.0f)\n"
-            "    );\n"
-            "\n"
-            "    gl_Position = vec4((quad_positions[gl_VertexID] * 2.0) - 1.0, 0.0, 1.0);\n"
-            "    v_texcoord = quad_positions[gl_VertexID] * u_scale + u_offset;\n"
+            "    gl_Position = vec4((a_texcoord * 2.0) - 1.0, 0.0, 1.0);\n"
+            "    v_texcoord = a_texcoord * u_scale + u_offset;\n"
             "}\n";
 
         GLuint vs = mFunctions->createShader(GL_VERTEX_SHADER);
         mFunctions->shaderSource(vs, 1, &vsSource, nullptr);
         mFunctions->compileShader(vs);
         ANGLE_TRY(CheckCompileStatus(mFunctions, vs));
 
         mFunctions->attachShader(mBlitProgram, vs);
         mFunctions->deleteShader(vs);
 
         // Compile the vertex shader
         // It discards if the texcoord is outside (0, 1)^2 so the blitframebuffer workaround
         // doesn't write when the point sampled is outside of the source framebuffer.
         const char *fsSource =
-            "#version 150\n"
+            "#version 100\n"
+            "precision highp float;"
             "uniform sampler2D u_source_texture;\n"
-            "in vec2 v_texcoord;\n"
-            "out vec4 output_color;\n"
+            "uniform bool u_multiply_alpha;\n"
+            "uniform bool u_unmultiply_alpha;\n"
+            "varying vec2 v_texcoord;\n"
             "\n"
             "void main()\n"
             "{\n"
             "    if (clamp(v_texcoord, vec2(0.0), vec2(1.0)) != v_texcoord)\n"
             "    {\n"
             "        discard;\n"
             "    }\n"
-            "    output_color = texture(u_source_texture, v_texcoord);\n"
+            "    vec4 color = texture2D(u_source_texture, v_texcoord);\n"
+            "    if (u_multiply_alpha) {color.xyz = color.xyz * color.a;}"
+            "    if (u_unmultiply_alpha && color.a != 0.0) {color.xyz = color.xyz / color.a;}"
+            "    gl_FragColor = color;"
             "}\n";
 
         GLuint fs = mFunctions->createShader(GL_FRAGMENT_SHADER);
         mFunctions->shaderSource(fs, 1, &fsSource, nullptr);
         mFunctions->compileShader(fs);
         ANGLE_TRY(CheckCompileStatus(mFunctions, fs));
 
         mFunctions->attachShader(mBlitProgram, fs);
         mFunctions->deleteShader(fs);
 
         mFunctions->linkProgram(mBlitProgram);
         ANGLE_TRY(CheckLinkStatus(mFunctions, mBlitProgram));
 
+        mTexCoordAttributeLocation = mFunctions->getAttribLocation(mBlitProgram, "a_texcoord");
         mSourceTextureLocation = mFunctions->getUniformLocation(mBlitProgram, "u_source_texture");
         mScaleLocation         = mFunctions->getUniformLocation(mBlitProgram, "u_scale");
         mOffsetLocation        = mFunctions->getUniformLocation(mBlitProgram, "u_offset");
-        mStateManager->useProgram(mBlitProgram);
+        mMultiplyAlphaLocation = mFunctions->getUniformLocation(mBlitProgram, "u_multiply_alpha");
+        mUnMultiplyAlphaLocation =
+            mFunctions->getUniformLocation(mBlitProgram, "u_unmultiply_alpha");
     }
 
     for (size_t i = 0; i < ArraySize(mScratchTextures); i++)
     {
         if (mScratchTextures[i] == 0)
         {
             mFunctions->genTextures(1, &mScratchTextures[i]);
         }
     }
 
     if (mScratchFBO == 0)
     {
         mFunctions->genFramebuffers(1, &mScratchFBO);
     }
 
+    if (mVertexBuffer == 0)
+    {
+        mFunctions->genBuffers(1, &mVertexBuffer);
+        mStateManager->bindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
+
+        // Use a single, large triangle, to avoid arithmetic precision issues where fragments
+        // with the same Y coordinate don't get exactly the same interpolated texcoord Y.
+        float vertexData[] = {
+            -0.5f, 0.0f, 1.5f, 0.0f, 0.5f, 2.0f,
+        };
+
+        mFunctions->bufferData(GL_ARRAY_BUFFER, sizeof(float) * 6, vertexData, GL_STATIC_DRAW);
+    }
+
     if (mVAO == 0)
     {
         mFunctions->genVertexArrays(1, &mVAO);
+
+        mStateManager->bindVertexArray(mVAO, 0);
+        mStateManager->bindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
+        mFunctions->enableVertexAttribArray(mTexCoordAttributeLocation);
+        mFunctions->vertexAttribPointer(mTexCoordAttributeLocation, 2, GL_FLOAT, GL_FALSE, 0,
+                                        nullptr);
     }
 
     return gl::NoError();
 }
 
 void BlitGL::orphanScratchTextures()
 {
     for (auto texture : mScratchTextures)
     {
         mStateManager->bindTexture(GL_TEXTURE_2D, texture);
+        gl::PixelUnpackState unpack;
+        mStateManager->setPixelUnpackState(unpack);
         mFunctions->texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE,
                                nullptr);
     }
 }
 
 void BlitGL::setScratchTextureParameter(GLenum param, GLenum value)
 {
     for (auto texture : mScratchTextures)
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/BlitGL.h
+++ b/gfx/angle/src/libANGLE/renderer/gl/BlitGL.h
@@ -20,16 +20,17 @@ class Framebuffer;
 }
 
 namespace rx
 {
 
 class FramebufferGL;
 class FunctionsGL;
 class StateManagerGL;
+class TextureGL;
 struct WorkaroundsGL;
 
 class BlitGL : public angle::NonCopyable
 {
   public:
     BlitGL(const FunctionsGL *functions,
            const WorkaroundsGL &workarounds,
            StateManagerGL *stateManager);
@@ -38,46 +39,67 @@ class BlitGL : public angle::NonCopyable
     gl::Error copyImageToLUMAWorkaroundTexture(GLuint texture,
                                                GLenum textureType,
                                                GLenum target,
                                                GLenum lumaFormat,
                                                size_t level,
                                                const gl::Rectangle &sourceArea,
                                                GLenum internalFormat,
                                                const gl::Framebuffer *source);
+
     gl::Error copySubImageToLUMAWorkaroundTexture(GLuint texture,
                                                   GLenum textureType,
                                                   GLenum target,
                                                   GLenum lumaFormat,
                                                   size_t level,
                                                   const gl::Offset &destOffset,
                                                   const gl::Rectangle &sourceArea,
                                                   const gl::Framebuffer *source);
 
     gl::Error blitColorBufferWithShader(const gl::Framebuffer *source,
                                         const gl::Framebuffer *dest,
                                         const gl::Rectangle &sourceArea,
                                         const gl::Rectangle &destArea,
                                         GLenum filter);
 
+    gl::Error copySubTexture(TextureGL *source,
+                             TextureGL *dest,
+                             const gl::Extents &sourceSize,
+                             const gl::Rectangle &sourceArea,
+                             const gl::Offset &destOffset,
+                             bool needsLumaWorkaround,
+                             GLenum lumaFormat,
+                             bool unpackFlipY,
+                             bool unpackPremultiplyAlpha,
+                             bool unpackUnmultiplyAlpha);
+
+    gl::Error copyTexSubImage(TextureGL *source,
+                              TextureGL *dest,
+                              const gl::Rectangle &sourceArea,
+                              const gl::Offset &destOffset);
+
     gl::Error initializeResources();
 
   private:
     void orphanScratchTextures();
     void setScratchTextureParameter(GLenum param, GLenum value);
 
     const FunctionsGL *mFunctions;
     const WorkaroundsGL &mWorkarounds;
     StateManagerGL *mStateManager;
 
     GLuint mBlitProgram;
+    GLint mTexCoordAttributeLocation;
     GLint mSourceTextureLocation;
     GLint mScaleLocation;
     GLint mOffsetLocation;
+    GLint mMultiplyAlphaLocation;
+    GLint mUnMultiplyAlphaLocation;
 
     GLuint mScratchTextures[2];
     GLuint mScratchFBO;
 
     GLuint mVAO;
+    GLuint mVertexBuffer;
 };
 }
 
 #endif  // LIBANGLE_RENDERER_GL_BLITGL_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/ContextGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/ContextGL.cpp
@@ -85,17 +85,24 @@ BufferImpl *ContextGL::createBuffer(cons
 
 VertexArrayImpl *ContextGL::createVertexArray(const gl::VertexArrayState &data)
 {
     return new VertexArrayGL(data, getFunctions(), getStateManager());
 }
 
 QueryImpl *ContextGL::createQuery(GLenum type)
 {
-    return new QueryGL(type, getFunctions(), getStateManager());
+    switch (type)
+    {
+        case GL_COMMANDS_COMPLETED_CHROMIUM:
+            return new SyncQueryGL(type, getFunctions(), getStateManager());
+
+        default:
+            return new StandardQueryGL(type, getFunctions(), getStateManager());
+    }
 }
 
 FenceNVImpl *ContextGL::createFenceNV()
 {
     return new FenceNVGL(getFunctions());
 }
 
 FenceSyncImpl *ContextGL::createFenceSync()
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/DisplayGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/DisplayGL.cpp
@@ -81,17 +81,17 @@ egl::Error DisplayGL::makeCurrent(egl::S
 
     if (!drawSurface)
     {
         return egl::Error(EGL_SUCCESS);
     }
 
     // Pause transform feedback before making a new surface current, to workaround anglebug.com/1426
     ContextGL *glContext = GetImplAs<ContextGL>(context);
-    glContext->getStateManager()->pauseTransformFeedback(context->getContextState());
+    glContext->getStateManager()->pauseTransformFeedback();
 
     SurfaceGL *glDrawSurface = GetImplAs<SurfaceGL>(drawSurface);
     ANGLE_TRY(glDrawSurface->makeCurrent());
     mCurrentDrawSurface = drawSurface;
 
     return egl::Error(EGL_SUCCESS);
 }
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/FramebufferGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/FramebufferGL.cpp
@@ -122,30 +122,35 @@ static void BindFramebufferAttachment(co
     {
         // Unbind this attachment
         functions->framebufferTexture2D(GL_FRAMEBUFFER, attachmentPoint, GL_TEXTURE_2D, 0, 0);
     }
 }
 
 Error FramebufferGL::discard(size_t count, const GLenum *attachments)
 {
-    UNIMPLEMENTED();
-    return Error(GL_INVALID_OPERATION);
+    // glInvalidateFramebuffer accepts the same enums as glDiscardFramebufferEXT
+    return invalidate(count, attachments);
 }
 
 Error FramebufferGL::invalidate(size_t count, const GLenum *attachments)
 {
-    // Since this function is just a hint and not available until OpenGL 4.3, only call it if it is available.
+    // Since this function is just a hint, only call a native function if it exists.
     if (mFunctions->invalidateFramebuffer)
     {
         mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebufferID);
         mFunctions->invalidateFramebuffer(GL_FRAMEBUFFER, static_cast<GLsizei>(count), attachments);
     }
+    else if (mFunctions->discardFramebuffer)
+    {
+        mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebufferID);
+        mFunctions->discardFramebuffer(GL_FRAMEBUFFER, static_cast<GLsizei>(count), attachments);
+    }
 
-    return Error(GL_NO_ERROR);
+    return gl::NoError();
 }
 
 Error FramebufferGL::invalidateSub(size_t count,
                                    const GLenum *attachments,
                                    const gl::Rectangle &area)
 {
     // Since this function is just a hint and not available until OpenGL 4.3, only call it if it is available.
     if (mFunctions->invalidateSubFramebuffer)
@@ -489,17 +494,17 @@ gl::Error FramebufferGL::readPixelsRowBy
                                                       const gl::PixelPackState &pack,
                                                       GLvoid *pixels) const
 {
     intptr_t offset = reinterpret_cast<intptr_t>(pixels);
 
     const gl::InternalFormat &glFormat =
         gl::GetInternalFormatInfo(gl::GetSizedInternalFormat(format, type));
     GLuint rowBytes = 0;
-    ANGLE_TRY_RESULT(glFormat.computeRowPitch(area.width, pack.alignment, pack.rowLength),
+    ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, pack.alignment, pack.rowLength),
                      rowBytes);
     GLuint skipBytes = 0;
     ANGLE_TRY_RESULT(glFormat.computeSkipBytes(rowBytes, 0, pack, false), skipBytes);
 
     gl::PixelPackState directPack;
     directPack.pixelBuffer = pack.pixelBuffer;
     directPack.alignment   = 1;
     mStateManager->setPixelPackState(directPack);
@@ -520,17 +525,17 @@ gl::Error FramebufferGL::readPixelsPaddi
                                                      GLenum format,
                                                      GLenum type,
                                                      const gl::PixelPackState &pack,
                                                      GLvoid *pixels) const
 {
     const gl::InternalFormat &glFormat =
         gl::GetInternalFormatInfo(gl::GetSizedInternalFormat(format, type));
     GLuint rowBytes = 0;
-    ANGLE_TRY_RESULT(glFormat.computeRowPitch(area.width, pack.alignment, pack.rowLength),
+    ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, pack.alignment, pack.rowLength),
                      rowBytes);
     GLuint skipBytes = 0;
     ANGLE_TRY_RESULT(glFormat.computeSkipBytes(rowBytes, 0, pack, false), skipBytes);
 
     // Get all by the last row
     if (area.height > 1)
     {
         mFunctions->readPixels(area.x, area.y, area.width, area.height - 1, format, type, pixels);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.cpp
@@ -783,17 +783,18 @@ FunctionsGL::FunctionsGL()
       vertexArrayAttribLFormat(nullptr),
       vertexArrayBindingDivisor(nullptr),
       vertexArrayElementBuffer(nullptr),
       vertexArrayVertexBuffer(nullptr),
       vertexArrayVertexBuffers(nullptr),
       blendBarrier(nullptr),
       primitiveBoundingBox(nullptr),
       eglImageTargetRenderbufferStorageOES(nullptr),
-      eglImageTargetTexture2DOES(nullptr)
+      eglImageTargetTexture2DOES(nullptr),
+      discardFramebuffer(nullptr)
 {
 }
 
 FunctionsGL::~FunctionsGL()
 {
 }
 
 void FunctionsGL::initialize()
@@ -1024,16 +1025,24 @@ void FunctionsGL::initializeProcsDesktop
     AssignGLExtensionEntryPoint(extensions, "GL_ARB_get_program_binary", loadProcAddress("glProgramParameteri"), &programParameteri);
 
     // GL_ARB_robustness
     AssignGLExtensionEntryPoint(extensions, "GL_ARB_robustness", loadProcAddress("glGetGraphicsResetStatusARB"), &getGraphicsResetStatus);
 
     // GL_KHR_robustness
     AssignGLExtensionEntryPoint(extensions, "GL_KHR_robustness", loadProcAddress("glGetGraphicsResetStatus"), &getGraphicsResetStatus);
 
+    // GL_ARB_invalidate_subdata
+    AssignGLExtensionEntryPoint(extensions, "GL_ARB_invalidate_subdata", loadProcAddress("glInvalidateTexSubImage"), &invalidateTexSubImage);
+    AssignGLExtensionEntryPoint(extensions, "GL_ARB_invalidate_subdata", loadProcAddress("glInvalidateTexImage"), &invalidateTexImage);
+    AssignGLExtensionEntryPoint(extensions, "GL_ARB_invalidate_subdata", loadProcAddress("glInvalidateBufferSubData"), &invalidateBufferSubData);
+    AssignGLExtensionEntryPoint(extensions, "GL_ARB_invalidate_subdata", loadProcAddress("glInvalidateBufferData"), &invalidateBufferData);
+    AssignGLExtensionEntryPoint(extensions, "GL_ARB_invalidate_subdata", loadProcAddress("glInvalidateFramebuffer"), &invalidateFramebuffer);
+    AssignGLExtensionEntryPoint(extensions, "GL_ARB_invalidate_subdata", loadProcAddress("glInvalidateSubFramebuffer"), &invalidateSubFramebuffer);
+
     // 1.0
     if (isAtLeastGL(gl::Version(1, 0)))
     {
         AssignGLEntryPoint(loadProcAddress("glBlendFunc"), &blendFunc);
         AssignGLEntryPoint(loadProcAddress("glClear"), &clear);
         AssignGLEntryPoint(loadProcAddress("glClearColor"), &clearColor);
         AssignGLEntryPoint(loadProcAddress("glClearDepth"), &clearDepth);
         AssignGLEntryPoint(loadProcAddress("glClearStencil"), &clearStencil);
@@ -1892,16 +1901,19 @@ void FunctionsGL::initializeProcsGLES()
     AssignGLExtensionEntryPoint(extensions, "GL_OES_get_program_binary", loadProcAddress("glProgramBinaryOES"), &programBinary);
 
     // GL_EXT_robustness
     AssignGLExtensionEntryPoint(extensions, "GL_EXT_robustness", loadProcAddress("glGetGraphicsResetStatusEXT"), &getGraphicsResetStatus);
 
     // GL_KHR_robustness
     AssignGLExtensionEntryPoint(extensions, "GL_KHR_robustness", loadProcAddress("glGetGraphicsResetStatusKHR"), &getGraphicsResetStatus);
 
+    // GL_EXT_discard_framebuffer
+    AssignGLExtensionEntryPoint(extensions, "GL_EXT_discard_framebuffer", loadProcAddress("glDiscardFramebufferEXT"), &discardFramebuffer);
+
     // 2.0
     if (isAtLeastGLES(gl::Version(2, 0)))
     {
         AssignGLEntryPoint(loadProcAddress("glActiveTexture"), &activeTexture);
         AssignGLEntryPoint(loadProcAddress("glAttachShader"), &attachShader);
         AssignGLEntryPoint(loadProcAddress("glBindAttribLocation"), &bindAttribLocation);
         AssignGLEntryPoint(loadProcAddress("glBindBuffer"), &bindBuffer);
         AssignGLEntryPoint(loadProcAddress("glBindFramebuffer"), &bindFramebuffer);
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h
+++ b/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h
@@ -770,20 +770,23 @@ class FunctionsGL
     PFNGLVERTEXARRAYELEMENTBUFFERPROC vertexArrayElementBuffer;
     PFNGLVERTEXARRAYVERTEXBUFFERPROC vertexArrayVertexBuffer;
     PFNGLVERTEXARRAYVERTEXBUFFERSPROC vertexArrayVertexBuffers;
 
     // ES 3.2
     PFNGLBLENDBARRIERPROC blendBarrier;
     PFNGLPRIMITIVEBOUNDINGBOXPROC primitiveBoundingBox;
 
-    // ES extensions
+    // GL_OES_EGL_image
     PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC eglImageTargetRenderbufferStorageOES;
     PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eglImageTargetTexture2DOES;
 
+    // GL_EXT_discard_framebuffer
+    PFNGLDISCARDFRAMEBUFFEREXTPROC discardFramebuffer;
+
   private:
     void initializeProcsDesktopGL();
     void initializeProcsGLES();
 
     virtual void *loadProcAddress(const std::string &function) = 0;
 };
 
 }
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/ProgramGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/ProgramGL.cpp
@@ -143,17 +143,17 @@ LinkResult ProgramGL::link(const gl::Con
 
         // Attach the shaders
         mFunctions->attachShader(mProgramID, vertexShaderGL->getShaderID());
         mFunctions->attachShader(mProgramID, fragmentShaderGL->getShaderID());
 
         // Bind attribute locations to match the GL layer.
         for (const sh::Attribute &attribute : mState.getAttributes())
         {
-            if (!attribute.staticUse)
+            if (!attribute.staticUse || attribute.isBuiltIn())
             {
                 continue;
             }
 
             mFunctions->bindAttribLocation(mProgramID, attribute.location, attribute.name.c_str());
         }
 
         // Link and verify
@@ -183,150 +183,303 @@ LinkResult ProgramGL::link(const gl::Con
 GLboolean ProgramGL::validate(const gl::Caps & /*caps*/, gl::InfoLog * /*infoLog*/)
 {
     // TODO(jmadill): implement validate
     return true;
 }
 
 void ProgramGL::setUniform1fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform1fv(uniLoc(location), count, v);
+    if (mFunctions->programUniform1fv != nullptr)
+    {
+        mFunctions->programUniform1fv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform1fv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform2fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform2fv(uniLoc(location), count, v);
+    if (mFunctions->programUniform2fv != nullptr)
+    {
+        mFunctions->programUniform2fv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform2fv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform3fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform3fv(uniLoc(location), count, v);
+    if (mFunctions->programUniform3fv != nullptr)
+    {
+        mFunctions->programUniform3fv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform3fv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform4fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform4fv(uniLoc(location), count, v);
+    if (mFunctions->programUniform4fv != nullptr)
+    {
+        mFunctions->programUniform4fv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform4fv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform1iv(GLint location, GLsizei count, const GLint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform1iv(uniLoc(location), count, v);
+    if (mFunctions->programUniform1iv != nullptr)
+    {
+        mFunctions->programUniform1iv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform1iv(uniLoc(location), count, v);
+    }
 
     const gl::VariableLocation &locationEntry = mState.getUniformLocations()[location];
 
     size_t samplerIndex = mUniformIndexToSamplerIndex[locationEntry.index];
     if (samplerIndex != GL_INVALID_INDEX)
     {
         std::vector<GLuint> &boundTextureUnits = mSamplerBindings[samplerIndex].boundTextureUnits;
 
         size_t copyCount =
             std::min<size_t>(count, boundTextureUnits.size() - locationEntry.element);
         std::copy(v, v + copyCount, boundTextureUnits.begin() + locationEntry.element);
     }
 }
 
 void ProgramGL::setUniform2iv(GLint location, GLsizei count, const GLint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform2iv(uniLoc(location), count, v);
+    if (mFunctions->programUniform2iv != nullptr)
+    {
+        mFunctions->programUniform2iv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform2iv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform3iv(GLint location, GLsizei count, const GLint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform3iv(uniLoc(location), count, v);
+    if (mFunctions->programUniform3iv != nullptr)
+    {
+        mFunctions->programUniform3iv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform3iv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform4iv(GLint location, GLsizei count, const GLint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform4iv(uniLoc(location), count, v);
+    if (mFunctions->programUniform4iv != nullptr)
+    {
+        mFunctions->programUniform4iv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform4iv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform1uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform1uiv(uniLoc(location), count, v);
+    if (mFunctions->programUniform1uiv != nullptr)
+    {
+        mFunctions->programUniform1uiv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform1uiv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform2uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform2uiv(uniLoc(location), count, v);
+    if (mFunctions->programUniform2uiv != nullptr)
+    {
+        mFunctions->programUniform2uiv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform2uiv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform3uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform3uiv(uniLoc(location), count, v);
+    if (mFunctions->programUniform3uiv != nullptr)
+    {
+        mFunctions->programUniform3uiv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform3uiv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniform4uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniform4uiv(uniLoc(location), count, v);
+    if (mFunctions->programUniform4uiv != nullptr)
+    {
+        mFunctions->programUniform4uiv(mProgramID, uniLoc(location), count, v);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniform4uiv(uniLoc(location), count, v);
+    }
 }
 
 void ProgramGL::setUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix2fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix2fv != nullptr)
+    {
+        mFunctions->programUniformMatrix2fv(mProgramID, uniLoc(location), count, transpose, value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix2fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix3fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix3fv != nullptr)
+    {
+        mFunctions->programUniformMatrix3fv(mProgramID, uniLoc(location), count, transpose, value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix3fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix4fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix4fv != nullptr)
+    {
+        mFunctions->programUniformMatrix4fv(mProgramID, uniLoc(location), count, transpose, value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix4fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix2x3fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix2x3fv != nullptr)
+    {
+        mFunctions->programUniformMatrix2x3fv(mProgramID, uniLoc(location), count, transpose,
+                                              value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix2x3fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix3x2fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix3x2fv != nullptr)
+    {
+        mFunctions->programUniformMatrix3x2fv(mProgramID, uniLoc(location), count, transpose,
+                                              value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix3x2fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix2x4fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix2x4fv != nullptr)
+    {
+        mFunctions->programUniformMatrix2x4fv(mProgramID, uniLoc(location), count, transpose,
+                                              value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix2x4fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix4x2fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix4x2fv != nullptr)
+    {
+        mFunctions->programUniformMatrix4x2fv(mProgramID, uniLoc(location), count, transpose,
+                                              value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix4x2fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix3x4fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix3x4fv != nullptr)
+    {
+        mFunctions->programUniformMatrix3x4fv(mProgramID, uniLoc(location), count, transpose,
+                                              value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix3x4fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
-    mStateManager->useProgram(mProgramID);
-    mFunctions->uniformMatrix4x3fv(uniLoc(location), count, transpose, value);
+    if (mFunctions->programUniformMatrix4x3fv != nullptr)
+    {
+        mFunctions->programUniformMatrix4x3fv(mProgramID, uniLoc(location), count, transpose,
+                                              value);
+    }
+    else
+    {
+        mStateManager->useProgram(mProgramID);
+        mFunctions->uniformMatrix4x3fv(uniLoc(location), count, transpose, value);
+    }
 }
 
 void ProgramGL::setUniformBlockBinding(GLuint uniformBlockIndex, GLuint uniformBlockBinding)
 {
     // Lazy init
     if (mUniformBlockRealLocationMap.empty())
     {
         mUniformBlockRealLocationMap.reserve(mState.getUniformBlocks().size());
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/QueryGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/QueryGL.cpp
@@ -6,16 +6,17 @@
 
 // QueryGL.cpp: Implements the class methods for QueryGL.
 
 #include "libANGLE/renderer/gl/QueryGL.h"
 
 #include "common/debug.h"
 #include "libANGLE/renderer/gl/FunctionsGL.h"
 #include "libANGLE/renderer/gl/StateManagerGL.h"
+#include "libANGLE/renderer/gl/renderergl_utils.h"
 
 namespace
 {
 
 GLuint64 MergeQueryResults(GLenum type, GLuint64 currentResult, GLuint64 newResult)
 {
     switch (type)
     {
@@ -38,116 +39,126 @@ GLuint64 MergeQueryResults(GLenum type, 
     }
 }
 
 }  // anonymous namespace
 
 namespace rx
 {
 
-QueryGL::QueryGL(GLenum type, const FunctionsGL *functions, StateManagerGL *stateManager)
-    : QueryImpl(type),
+QueryGL::QueryGL(GLenum type) : QueryImpl(type)
+{
+}
+
+QueryGL::~QueryGL()
+{
+}
+
+StandardQueryGL::StandardQueryGL(GLenum type,
+                                 const FunctionsGL *functions,
+                                 StateManagerGL *stateManager)
+    : QueryGL(type),
       mType(type),
       mFunctions(functions),
       mStateManager(stateManager),
       mActiveQuery(0),
       mPendingQueries(),
       mResultSum(0)
 {
 }
 
-QueryGL::~QueryGL()
+StandardQueryGL::~StandardQueryGL()
 {
     mStateManager->deleteQuery(mActiveQuery);
     mStateManager->onDeleteQueryObject(this);
     while (!mPendingQueries.empty())
     {
         mStateManager->deleteQuery(mPendingQueries.front());
         mPendingQueries.pop_front();
     }
 }
 
-gl::Error QueryGL::begin()
+gl::Error StandardQueryGL::begin()
 {
     mResultSum = 0;
     mStateManager->onBeginQuery(this);
     return resume();
 }
 
-gl::Error QueryGL::end()
+gl::Error StandardQueryGL::end()
 {
     return pause();
 }
 
-gl::Error QueryGL::queryCounter()
+gl::Error StandardQueryGL::queryCounter()
 {
     ASSERT(mType == GL_TIMESTAMP);
 
     // Directly create a query for the timestamp and add it to the pending query queue, as timestamp
     // queries do not have the traditional begin/end block and never need to be paused/resumed
     GLuint query;
     mFunctions->genQueries(1, &query);
     mFunctions->queryCounter(query, GL_TIMESTAMP);
     mPendingQueries.push_back(query);
 
     return gl::Error(GL_NO_ERROR);
 }
 
 template <typename T>
-gl::Error QueryGL::getResultBase(T *params)
+gl::Error StandardQueryGL::getResultBase(T *params)
 {
     ASSERT(mActiveQuery == 0);
 
     gl::Error error = flush(true);
     if (error.isError())
     {
         return error;
     }
 
     ASSERT(mPendingQueries.empty());
     *params = static_cast<T>(mResultSum);
 
     return gl::Error(GL_NO_ERROR);
 }
 
-gl::Error QueryGL::getResult(GLint *params)
+gl::Error StandardQueryGL::getResult(GLint *params)
 {
     return getResultBase(params);
 }
 
-gl::Error QueryGL::getResult(GLuint *params)
+gl::Error StandardQueryGL::getResult(GLuint *params)
 {
     return getResultBase(params);
 }
 
-gl::Error QueryGL::getResult(GLint64 *params)
+gl::Error StandardQueryGL::getResult(GLint64 *params)
 {
     return getResultBase(params);
 }
 
-gl::Error QueryGL::getResult(GLuint64 *params)
+gl::Error StandardQueryGL::getResult(GLuint64 *params)
 {
     return getResultBase(params);
 }
 
-gl::Error QueryGL::isResultAvailable(bool *available)
+gl::Error StandardQueryGL::isResultAvailable(bool *available)
 {
     ASSERT(mActiveQuery == 0);
 
     gl::Error error = flush(false);
     if (error.isError())
     {
         return error;
     }
 
     *available = mPendingQueries.empty();
     return gl::Error(GL_NO_ERROR);
 }
 
-gl::Error QueryGL::pause()
+gl::Error StandardQueryGL::pause()
 {
     if (mActiveQuery != 0)
     {
         mStateManager->endQuery(mType, mActiveQuery);
 
         mPendingQueries.push_back(mActiveQuery);
         mActiveQuery = 0;
     }
@@ -157,17 +168,17 @@ gl::Error QueryGL::pause()
     if (error.isError())
     {
         return error;
     }
 
     return gl::Error(GL_NO_ERROR);
 }
 
-gl::Error QueryGL::resume()
+gl::Error StandardQueryGL::resume()
 {
     if (mActiveQuery == 0)
     {
         // Flush to make sure the pending queries don't add up too much.
         gl::Error error = flush(false);
         if (error.isError())
         {
             return error;
@@ -175,17 +186,17 @@ gl::Error QueryGL::resume()
 
         mFunctions->genQueries(1, &mActiveQuery);
         mStateManager->beginQuery(mType, mActiveQuery);
     }
 
     return gl::Error(GL_NO_ERROR);
 }
 
-gl::Error QueryGL::flush(bool force)
+gl::Error StandardQueryGL::flush(bool force)
 {
     while (!mPendingQueries.empty())
     {
         GLuint id = mPendingQueries.front();
         if (!force)
         {
             GLuint resultAvailable = 0;
             mFunctions->getQueryObjectuiv(id, GL_QUERY_RESULT_AVAILABLE, &resultAvailable);
@@ -214,9 +225,199 @@ gl::Error QueryGL::flush(bool force)
         mStateManager->deleteQuery(id);
 
         mPendingQueries.pop_front();
     }
 
     return gl::Error(GL_NO_ERROR);
 }
 
+class SyncProviderGL
+{
+  public:
+    virtual ~SyncProviderGL() {}
+    virtual gl::Error flush(bool force, bool *finished) = 0;
+};
+
+class SyncProviderGLSync : public SyncProviderGL
+{
+  public:
+    SyncProviderGLSync(const FunctionsGL *functions) : mFunctions(functions), mSync(nullptr)
+    {
+        mSync = mFunctions->fenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
+    }
+
+    virtual ~SyncProviderGLSync() { mFunctions->deleteSync(mSync); }
+
+    gl::Error flush(bool force, bool *finished) override
+    {
+        if (force)
+        {
+            mFunctions->clientWaitSync(mSync, 0, 0);
+            *finished = true;
+        }
+        else
+        {
+            GLint value = 0;
+            mFunctions->getSynciv(mSync, GL_SYNC_STATUS, 1, nullptr, &value);
+            *finished = (value == GL_SIGNALED);
+        }
+
+        return gl::NoError();
+    }
+
+  private:
+    const FunctionsGL *mFunctions;
+    GLsync mSync;
+};
+
+class SyncProviderGLQuery : public SyncProviderGL
+{
+  public:
+    SyncProviderGLQuery(const FunctionsGL *functions,
+                        StateManagerGL *stateManager,
+                        GLenum queryType)
+        : mFunctions(functions), mQuery(0)
+    {
+        mFunctions->genQueries(1, &mQuery);
+        stateManager->pauseQuery(queryType);
+        mFunctions->beginQuery(queryType, mQuery);
+        mFunctions->endQuery(queryType);
+        stateManager->resumeQuery(queryType);
+    }
+
+    virtual ~SyncProviderGLQuery() { mFunctions->deleteQueries(1, &mQuery); }
+
+    gl::Error flush(bool force, bool *finished) override
+    {
+        if (force)
+        {
+            GLint result = 0;
+            mFunctions->getQueryObjectiv(mQuery, GL_QUERY_RESULT, &result);
+            *finished = true;
+        }
+        else
+        {
+            GLint available = 0;
+            mFunctions->getQueryObjectiv(mQuery, GL_QUERY_RESULT_AVAILABLE, &available);
+            *finished = (available == GL_TRUE);
+        }
+
+        return gl::NoError();
+    }
+
+  private:
+    const FunctionsGL *mFunctions;
+    GLuint mQuery;
+};
+
+SyncQueryGL::SyncQueryGL(GLenum type, const FunctionsGL *functions, StateManagerGL *stateManager)
+    : QueryGL(type),
+      mFunctions(functions),
+      mStateManager(stateManager),
+      mSyncProvider(nullptr),
+      mFinished(false)
+{
+    ASSERT(IsSupported(mFunctions));
+    ASSERT(type == GL_COMMANDS_COMPLETED_CHROMIUM);
 }
+
+SyncQueryGL::~SyncQueryGL()
+{
+}
+
+bool SyncQueryGL::IsSupported(const FunctionsGL *functions)
+{
+    return nativegl::SupportsFenceSync(functions) || nativegl::SupportsOcclusionQueries(functions);
+}
+
+gl::Error SyncQueryGL::begin()
+{
+    return gl::NoError();
+}
+
+gl::Error SyncQueryGL::end()
+{
+    if (nativegl::SupportsFenceSync(mFunctions))
+    {
+        mSyncProvider.reset(new SyncProviderGLSync(mFunctions));
+    }
+    else if (nativegl::SupportsOcclusionQueries(mFunctions))
+    {
+        mSyncProvider.reset(
+            new SyncProviderGLQuery(mFunctions, mStateManager, GL_ANY_SAMPLES_PASSED));
+    }
+    else
+    {
+        ASSERT(false);
+        return gl::Error(GL_INVALID_OPERATION, "No native support for sync queries.");
+    }
+    return gl::NoError();
+}
+
+gl::Error SyncQueryGL::queryCounter()
+{
+    UNREACHABLE();
+    return gl::NoError();
+}
+
+gl::Error SyncQueryGL::getResult(GLint *params)
+{
+    return getResultBase(params);
+}
+
+gl::Error SyncQueryGL::getResult(GLuint *params)
+{
+    return getResultBase(params);
+}
+
+gl::Error SyncQueryGL::getResult(GLint64 *params)
+{
+    return getResultBase(params);
+}
+
+gl::Error SyncQueryGL::getResult(GLuint64 *params)
+{
+    return getResultBase(params);
+}
+
+gl::Error SyncQueryGL::isResultAvailable(bool *available)
+{
+    ANGLE_TRY(flush(false));
+    *available = mFinished;
+    return gl::NoError();
+}
+
+gl::Error SyncQueryGL::pause()
+{
+    return gl::NoError();
+}
+
+gl::Error SyncQueryGL::resume()
+{
+    return gl::NoError();
+}
+
+gl::Error SyncQueryGL::flush(bool force)
+{
+    if (mSyncProvider == nullptr)
+    {
+        ASSERT(mFinished);
+        return gl::NoError();
+    }
+
+    ANGLE_TRY(mSyncProvider->flush(force, &mFinished));
+    if (mFinished)
+    {
+        mSyncProvider.reset();
+    }
+
+    return gl::NoError();
+}
+
+template <typename T>
+gl::Error SyncQueryGL::getResultBase(T *params)
+{
+    ANGLE_TRY(flush(true));
+    *params = static_cast<T>(mFinished ? GL_TRUE : GL_FALSE);
+    return gl::NoError();
+}
+}
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/QueryGL.h
+++ b/gfx/angle/src/libANGLE/renderer/gl/QueryGL.h
@@ -17,36 +17,46 @@ namespace rx
 {
 
 class FunctionsGL;
 class StateManagerGL;
 
 class QueryGL : public QueryImpl
 {
   public:
-    QueryGL(GLenum type, const FunctionsGL *functions, StateManagerGL *stateManager);
+    QueryGL(GLenum type);
     ~QueryGL() override;
 
+    // OpenGL is only allowed to have one query of each type active at any given time. Since ANGLE
+    // virtualizes contexts, queries need to be able to be paused and resumed.
+    // A query is "paused" by ending it and pushing the ID into a list of queries awaiting readback.
+    // When it is "resumed", a new query is generated and started.
+    // When a result is required, the queries are "flushed" by iterating over the list of pending
+    // queries and merging their results.
+    virtual gl::Error pause()  = 0;
+    virtual gl::Error resume() = 0;
+};
+
+class StandardQueryGL : public QueryGL
+{
+  public:
+    StandardQueryGL(GLenum type, const FunctionsGL *functions, StateManagerGL *stateManager);
+    ~StandardQueryGL() override;
+
     gl::Error begin() override;
     gl::Error end() override;
     gl::Error queryCounter() override;
     gl::Error getResult(GLint *params) override;
     gl::Error getResult(GLuint *params) override;
     gl::Error getResult(GLint64 *params) override;
     gl::Error getResult(GLuint64 *params) override;
     gl::Error isResultAvailable(bool *available) override;
 
-    // OpenGL is only allowed to have one query of each type active at any given time. Since ANGLE
-    // virtualizes contexts, queries need to be able to be paused and resumed.
-    // A query is "paused" by ending it and pushing the ID into a list of queries awaiting readback.
-    // When it is "resumed", a new query is generated and started.
-    // When a result is required, the queries are "flushed" by iterating over the list of pending
-    // queries and merging their results.
-    gl::Error pause();
-    gl::Error resume();
+    gl::Error pause() override;
+    gl::Error resume() override;
 
   private:
     gl::Error flush(bool force);
 
     template <typename T>
     gl::Error getResultBase(T *params);
 
     GLenum mType;
@@ -54,11 +64,44 @@ class QueryGL : public QueryImpl
     const FunctionsGL *mFunctions;
     StateManagerGL *mStateManager;
 
     GLuint mActiveQuery;
     std::deque<GLuint> mPendingQueries;
     GLuint64 mResultSum;
 };
 
+class SyncProviderGL;
+class SyncQueryGL : public QueryGL
+{
+  public:
+    SyncQueryGL(GLenum type, const FunctionsGL *functions, StateManagerGL *stateManager);
+    ~SyncQueryGL() override;
+
+    static bool IsSupported(const FunctionsGL *functions);
+
+    gl::Error begin() override;
+    gl::Error end() override;
+    gl::Error queryCounter() override;
+    gl::Error getResult(GLint *params) override;
+    gl::Error getResult(GLuint *params) override;
+    gl::Error getResult(GLint64 *params) override;
+    gl::Error getResult(GLuint64 *params) override;
+    gl::Error isResultAvailable(bool *available) override;
+
+    gl::Error pause() override;
+    gl::Error resume() override;
+
+  private:
+    gl::Error flush(bool force);
+
+    template <typename T>
+    gl::Error getResultBase(T *params);
+
+    const FunctionsGL *mFunctions;
+    StateManagerGL *mStateManager;
+
+    std::unique_ptr<SyncProviderGL> mSyncProvider;
+    bool mFinished;
+};
 }
 
 #endif // LIBANGLE_RENDERER_GL_QUERYGL_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp
@@ -130,16 +130,17 @@ StateManagerGL::StateManagerGL(const Fun
       mLocalDirtyBits()
 {
     ASSERT(mFunctions);
 
     mTextures[GL_TEXTURE_2D].resize(rendererCaps.maxCombinedTextureImageUnits);
     mTextures[GL_TEXTURE_CUBE_MAP].resize(rendererCaps.maxCombinedTextureImageUnits);
     mTextures[GL_TEXTURE_2D_ARRAY].resize(rendererCaps.maxCombinedTextureImageUnits);
     mTextures[GL_TEXTURE_3D].resize(rendererCaps.maxCombinedTextureImageUnits);
+    mTextures[GL_TEXTURE_2D_MULTISAMPLE].resize(rendererCaps.maxCombinedTextureImageUnits);
 
     mIndexedBuffers[GL_UNIFORM_BUFFER].resize(rendererCaps.maxCombinedUniformBlocks);
 
     for (GLenum queryType : QueryTypes)
     {
         mQueries[queryType] = 0;
     }
 
@@ -656,40 +657,70 @@ gl::Error StateManagerGL::setDrawElement
         return error;
     }
 
     bindVertexArray(vaoGL->getVertexArrayID(), vaoGL->getAppliedElementArrayBufferID());
 
     return setGenericDrawState(data);
 }
 
-gl::Error StateManagerGL::pauseTransformFeedback(const gl::ContextState &data)
+void StateManagerGL::pauseTransformFeedback()
+{
+    if (mPrevDrawTransformFeedback != nullptr)
+    {
+        mPrevDrawTransformFeedback->syncPausedState(true);
+    }
+}
+
+void StateManagerGL::pauseAllQueries()
 {
-    // If the context is going to be changed, pause the previous context's transform feedback
-    if (data.getContext() != mPrevDrawContext)
+    for (QueryGL *prevQuery : mCurrentQueries)
     {
-        if (mPrevDrawTransformFeedback != nullptr)
+        prevQuery->pause();
+    }
+}
+
+void StateManagerGL::pauseQuery(GLenum type)
+{
+    for (QueryGL *prevQuery : mCurrentQueries)
+    {
+        if (prevQuery->getType() == type)
         {
-            mPrevDrawTransformFeedback->syncPausedState(true);
+            prevQuery->pause();
         }
     }
-    return gl::Error(GL_NO_ERROR);
+}
+
+void StateManagerGL::resumeAllQueries()
+{
+    for (QueryGL *prevQuery : mCurrentQueries)
+    {
+        prevQuery->resume();
+    }
+}
+
+void StateManagerGL::resumeQuery(GLenum type)
+{
+    for (QueryGL *prevQuery : mCurrentQueries)
+    {
+        if (prevQuery->getType() == type)
+        {
+            prevQuery->resume();
+        }
+    }
 }
 
 gl::Error StateManagerGL::onMakeCurrent(const gl::ContextState &data)
 {
     const gl::State &state = data.getState();
 
     // If the context has changed, pause the previous context's queries
     if (data.getContext() != mPrevDrawContext)
     {
-        for (QueryGL *prevQuery : mCurrentQueries)
-        {
-            prevQuery->pause();
-        }
+        pauseAllQueries();
     }
     mCurrentQueries.clear();
     mPrevDrawTransformFeedback = nullptr;
     mPrevDrawContext           = data.getContext();
 
     // Set the current query state
     for (GLenum queryType : QueryTypes)
     {
@@ -1538,16 +1569,19 @@ void StateManagerGL::syncState(const gl:
                 // TODO(jmadill): implement this
                 break;
             case gl::State::DIRTY_BIT_RENDERBUFFER_BINDING:
                 // TODO(jmadill): implement this
                 break;
             case gl::State::DIRTY_BIT_VERTEX_ARRAY_BINDING:
                 // TODO(jmadill): implement this
                 break;
+            case gl::State::DIRTY_BIT_DRAW_INDIRECT_BUFFER_BINDING:
+                // TODO: implement this
+                break;
             case gl::State::DIRTY_BIT_PROGRAM_BINDING:
                 // TODO(jmadill): implement this
                 break;
             case gl::State::DIRTY_BIT_MULTISAMPLING:
                 setMultisamplingStateEnabled(state.isMultisamplingEnabled());
                 break;
             case gl::State::DIRTY_BIT_SAMPLE_ALPHA_TO_ONE:
                 setSampleAlphaToOneStateEnabled(state.isSampleAlphaToOneEnabled());
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/StateManagerGL.h
+++ b/gfx/angle/src/libANGLE/renderer/gl/StateManagerGL.h
@@ -145,17 +145,21 @@ class StateManagerGL final : angle::NonC
                                  GLsizei instanceCount);
     gl::Error setDrawElementsState(const gl::ContextState &data,
                                    GLsizei count,
                                    GLenum type,
                                    const GLvoid *indices,
                                    GLsizei instanceCount,
                                    const GLvoid **outIndices);
 
-    gl::Error pauseTransformFeedback(const gl::ContextState &data);
+    void pauseTransformFeedback();
+    void pauseAllQueries();
+    void pauseQuery(GLenum type);
+    void resumeAllQueries();
+    void resumeQuery(GLenum type);
     gl::Error onMakeCurrent(const gl::ContextState &data);
 
     void syncState(const gl::State &state, const gl::State::DirtyBits &glDirtyBits);
 
     GLuint getBoundBuffer(GLenum type);
 
   private:
     gl::Error setGenericDrawState(const gl::ContextState &data);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/TextureGL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/TextureGL.cpp
@@ -131,25 +131,28 @@ TextureGL::TextureGL(const gl::TextureSt
                      StateManagerGL *stateManager,
                      BlitGL *blitter)
     : TextureImpl(state),
       mFunctions(functions),
       mWorkarounds(workarounds),
       mStateManager(stateManager),
       mBlitter(blitter),
       mLevelInfo(gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS + 1),
-      mAppliedTextureState(state.mTarget),
+      mAppliedSwizzle(state.getSwizzleState()),
+      mAppliedSampler(state.getSamplerState()),
+      mAppliedBaseLevel(state.getEffectiveBaseLevel()),
+      mAppliedMaxLevel(state.getEffectiveMaxLevel()),
       mTextureID(0)
 {
     ASSERT(mFunctions);
     ASSERT(mStateManager);
     ASSERT(mBlitter);
 
     mFunctions->genTextures(1, &mTextureID);
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
+    mStateManager->bindTexture(getTarget(), mTextureID);
 }
 
 TextureGL::~TextureGL()
 {
     mStateManager->deleteTexture(mTextureID);
     mTextureID = 0;
 }
 
@@ -177,17 +180,17 @@ gl::Error TextureGL::setImage(GLenum tar
         gl::Box area(0, 0, 0, size.width, size.height, size.depth);
         return setSubImageRowByRowWorkaround(target, level, area, format, type, unpack, pixels);
     }
 
     if (mWorkarounds.unpackLastRowSeparatelyForPaddingInclusion)
     {
         bool apply;
         ANGLE_TRY_RESULT(ShouldApplyLastRowPaddingWorkaround(size, unpack, format, type,
-                                                             UseTexImage3D(mState.mTarget), pixels),
+                                                             UseTexImage3D(getTarget()), pixels),
                          apply);
 
         // The driver will think the pixel buffer doesn't have enough data, work around this bug
         // by uploading the last row (and last level if 3D) separately.
         if (apply)
         {
             reserveTexImageToBeFilled(target, level, internalFormat, size, format, type);
 
@@ -209,31 +212,31 @@ gl::Error TextureGL::setImage(GLenum tar
 void TextureGL::setImageHelper(GLenum target,
                                size_t level,
                                GLenum internalFormat,
                                const gl::Extents &size,
                                GLenum format,
                                GLenum type,
                                const uint8_t *pixels)
 {
-    ASSERT(CompatibleTextureTarget(mState.mTarget, target));
+    ASSERT(CompatibleTextureTarget(getTarget(), target));
 
     nativegl::TexImageFormat texImageFormat =
         nativegl::GetTexImageFormat(mFunctions, mWorkarounds, internalFormat, format, type);
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
+    mStateManager->bindTexture(getTarget(), mTextureID);
 
-    if (UseTexImage2D(mState.mTarget))
+    if (UseTexImage2D(getTarget()))
     {
         ASSERT(size.depth == 1);
         mFunctions->texImage2D(target, static_cast<GLint>(level), texImageFormat.internalFormat,
                                size.width, size.height, 0, texImageFormat.format,
                                texImageFormat.type, pixels);
     }
-    else if (UseTexImage3D(mState.mTarget))
+    else if (UseTexImage3D(getTarget()))
     {
         mFunctions->texImage3D(target, static_cast<GLint>(level), texImageFormat.internalFormat,
                                size.width, size.height, size.depth, 0, texImageFormat.format,
                                texImageFormat.type, pixels);
     }
     else
     {
         UNREACHABLE();
@@ -244,68 +247,66 @@ void TextureGL::setImageHelper(GLenum ta
 
 void TextureGL::reserveTexImageToBeFilled(GLenum target,
                                           size_t level,
                                           GLenum internalFormat,
                                           const gl::Extents &size,
                                           GLenum format,
                                           GLenum type)
 {
-    GLuint unpackBuffer = mStateManager->getBoundBuffer(GL_PIXEL_UNPACK_BUFFER);
-    mStateManager->bindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
     gl::PixelUnpackState unpack;
+    mStateManager->setPixelUnpackState(unpack);
     setImageHelper(target, level, internalFormat, size, format, type, nullptr);
-    mStateManager->bindBuffer(GL_PIXEL_UNPACK_BUFFER, unpackBuffer);
 }
 
 gl::Error TextureGL::setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
                                  const gl::PixelUnpackState &unpack, const uint8_t *pixels)
 {
-    ASSERT(CompatibleTextureTarget(mState.mTarget, target));
+    ASSERT(CompatibleTextureTarget(getTarget(), target));
 
     nativegl::TexSubImageFormat texSubImageFormat =
         nativegl::GetTexSubImageFormat(mFunctions, mWorkarounds, format, type);
 
     ASSERT(mLevelInfo[level].lumaWorkaround.enabled ==
            GetLevelInfo(format, texSubImageFormat.format).lumaWorkaround.enabled);
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
+    mStateManager->bindTexture(getTarget(), mTextureID);
     if (mWorkarounds.unpackOverlappingRowsSeparatelyUnpackBuffer && unpack.pixelBuffer.get() &&
         unpack.rowLength != 0 && unpack.rowLength < area.width)
     {
         return setSubImageRowByRowWorkaround(target, level, area, format, type, unpack, pixels);
     }
 
     if (mWorkarounds.unpackLastRowSeparatelyForPaddingInclusion)
     {
         gl::Extents size(area.width, area.height, area.depth);
 
         bool apply;
         ANGLE_TRY_RESULT(ShouldApplyLastRowPaddingWorkaround(size, unpack, format, type,
-                                                             UseTexImage3D(mState.mTarget), pixels),
+                                                             UseTexImage3D(getTarget()), pixels),
                          apply);
 
         // The driver will think the pixel buffer doesn't have enough data, work around this bug
         // by uploading the last row (and last level if 3D) separately.
         if (apply)
         {
             return setSubImagePaddingWorkaround(target, level, area, format, type, unpack, pixels);
         }
     }
 
-    if (UseTexImage2D(mState.mTarget))
+    if (UseTexImage2D(getTarget()))
     {
         ASSERT(area.z == 0 && area.depth == 1);
         mFunctions->texSubImage2D(target, static_cast<GLint>(level), area.x, area.y, area.width,
                                   area.height, texSubImageFormat.format, texSubImageFormat.type,
                                   pixels);
     }
     else
     {
-        ASSERT(UseTexImage3D(mState.mTarget));
+        ASSERT(UseTexImage3D(getTarget()));
         mFunctions->texSubImage3D(target, static_cast<GLint>(level), area.x, area.y, area.z,
                                   area.width, area.height, area.depth, texSubImageFormat.format,
                                   texSubImageFormat.type, pixels);
     }
 
     return gl::Error(GL_NO_ERROR);
 }
 
@@ -320,23 +321,23 @@ gl::Error TextureGL::setSubImageRowByRow
     gl::PixelUnpackState directUnpack;
     directUnpack.pixelBuffer = unpack.pixelBuffer;
     directUnpack.alignment   = 1;
     mStateManager->setPixelUnpackState(directUnpack);
     directUnpack.pixelBuffer.set(nullptr);
 
     const gl::InternalFormat &glFormat =
         gl::GetInternalFormatInfo(gl::GetSizedInternalFormat(format, type));
-    GLuint rowBytes = 0;
-    ANGLE_TRY_RESULT(glFormat.computeRowPitch(area.width, unpack.alignment, unpack.rowLength),
+    GLuint rowBytes                      = 0;
+    ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
                      rowBytes);
     GLuint imageBytes = 0;
-    ANGLE_TRY_RESULT(gl::InternalFormat::computeDepthPitch(area.height, unpack.imageHeight, rowBytes),
+    ANGLE_TRY_RESULT(glFormat.computeDepthPitch(area.height, unpack.imageHeight, rowBytes),
                      imageBytes);
-    bool useTexImage3D = UseTexImage3D(mState.mTarget);
+    bool useTexImage3D = UseTexImage3D(getTarget());
     GLuint skipBytes   = 0;
     ANGLE_TRY_RESULT(glFormat.computeSkipBytes(rowBytes, imageBytes, unpack, useTexImage3D),
                      skipBytes);
 
     const uint8_t *pixelsWithSkip = pixels + skipBytes;
     if (useTexImage3D)
     {
         for (GLint image = 0; image < area.depth; ++image)
@@ -349,17 +350,17 @@ gl::Error TextureGL::setSubImageRowByRow
                 mFunctions->texSubImage3D(target, static_cast<GLint>(level), area.x, row + area.y,
                                           image + area.z, area.width, 1, 1, format, type,
                                           rowPixels);
             }
         }
     }
     else
     {
-        ASSERT(UseTexImage2D(mState.mTarget));
+        ASSERT(UseTexImage2D(getTarget()));
         for (GLint row = 0; row < area.height; ++row)
         {
             GLint byteOffset         = row * rowBytes;
             const GLubyte *rowPixels = pixelsWithSkip + byteOffset;
             mFunctions->texSubImage2D(target, static_cast<GLint>(level), area.x, row + area.y,
                                       area.width, 1, format, type, rowPixels);
         }
     }
@@ -372,26 +373,28 @@ gl::Error TextureGL::setSubImagePaddingW
                                                   GLenum format,
                                                   GLenum type,
                                                   const gl::PixelUnpackState &unpack,
                                                   const uint8_t *pixels)
 {
     const gl::InternalFormat &glFormat =
         gl::GetInternalFormatInfo(gl::GetSizedInternalFormat(format, type));
     GLuint rowBytes = 0;
-    ANGLE_TRY_RESULT(glFormat.computeRowPitch(area.width, unpack.alignment, unpack.rowLength),
+    ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
                      rowBytes);
     GLuint imageBytes = 0;
-    ANGLE_TRY_RESULT(gl::InternalFormat::computeDepthPitch(area.height, unpack.imageHeight, rowBytes),
+    ANGLE_TRY_RESULT(glFormat.computeDepthPitch(area.height, unpack.imageHeight, rowBytes),
                      imageBytes);
-    bool useTexImage3D = UseTexImage3D(mState.mTarget);
+    bool useTexImage3D = UseTexImage3D(getTarget());
     GLuint skipBytes   = 0;
     ANGLE_TRY_RESULT(glFormat.computeSkipBytes(rowBytes, imageBytes, unpack, useTexImage3D),
                      skipBytes);
 
+    mStateManager->setPixelUnpackState(unpack);
+
     gl::PixelUnpackState directUnpack;
     directUnpack.pixelBuffer = unpack.pixelBuffer;
     directUnpack.alignment   = 1;
 
     if (useTexImage3D)
     {
         // Upload all but the last slice
         if (area.depth > 1)
@@ -420,17 +423,17 @@ gl::Error TextureGL::setSubImagePaddingW
             skipBytes + (area.depth - 1) * imageBytes + (area.height - 1) * rowBytes;
         const GLubyte *lastRowPixels = pixels + lastRowOffset;
         mFunctions->texSubImage3D(target, static_cast<GLint>(level), area.x,
                                   area.y + area.height - 1, area.z + area.depth - 1, area.width, 1,
                                   1, format, type, lastRowPixels);
     }
     else
     {
-        ASSERT(UseTexImage2D(mState.mTarget));
+        ASSERT(UseTexImage2D(getTarget()));
 
         // Upload all but the last row
         if (area.height > 1)
         {
             mFunctions->texSubImage2D(target, static_cast<GLint>(level), area.x, area.y, area.width,
                                       area.height - 1, format, type, pixels);
         }
 
@@ -447,30 +450,30 @@ gl::Error TextureGL::setSubImagePaddingW
     directUnpack.pixelBuffer.set(nullptr);
 
     return gl::NoError();
 }
 
 gl::Error TextureGL::setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
                                         const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
 {
-    ASSERT(CompatibleTextureTarget(mState.mTarget, target));
+    ASSERT(CompatibleTextureTarget(getTarget(), target));
 
     nativegl::CompressedTexImageFormat compressedTexImageFormat =
         nativegl::GetCompressedTexImageFormat(mFunctions, mWorkarounds, internalFormat);
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
-    if (UseTexImage2D(mState.mTarget))
+    mStateManager->bindTexture(getTarget(), mTextureID);
+    if (UseTexImage2D(getTarget()))
     {
         ASSERT(size.depth == 1);
         mFunctions->compressedTexImage2D(target, static_cast<GLint>(level),
                                          compressedTexImageFormat.internalFormat, size.width,
                                          size.height, 0, static_cast<GLsizei>(imageSize), pixels);
     }
-    else if (UseTexImage3D(mState.mTarget))
+    else if (UseTexImage3D(getTarget()))
     {
         mFunctions->compressedTexImage3D(
             target, static_cast<GLint>(level), compressedTexImageFormat.internalFormat, size.width,
             size.height, size.depth, 0, static_cast<GLsizei>(imageSize), pixels);
     }
     else
     {
         UNREACHABLE();
@@ -480,30 +483,30 @@ gl::Error TextureGL::setCompressedImage(
     ASSERT(!mLevelInfo[level].lumaWorkaround.enabled);
 
     return gl::Error(GL_NO_ERROR);
 }
 
 gl::Error TextureGL::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
                                            const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
 {
-    ASSERT(CompatibleTextureTarget(mState.mTarget, target));
+    ASSERT(CompatibleTextureTarget(getTarget(), target));
 
     nativegl::CompressedTexSubImageFormat compressedTexSubImageFormat =
         nativegl::GetCompressedSubTexImageFormat(mFunctions, mWorkarounds, format);
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
-    if (UseTexImage2D(mState.mTarget))
+    mStateManager->bindTexture(getTarget(), mTextureID);
+    if (UseTexImage2D(getTarget()))
     {
         ASSERT(area.z == 0 && area.depth == 1);
         mFunctions->compressedTexSubImage2D(
             target, static_cast<GLint>(level), area.x, area.y, area.width, area.height,
             compressedTexSubImageFormat.format, static_cast<GLsizei>(imageSize), pixels);
     }
-    else if (UseTexImage3D(mState.mTarget))
+    else if (UseTexImage3D(getTarget()))
     {
         mFunctions->compressedTexSubImage3D(target, static_cast<GLint>(level), area.x, area.y,
                                             area.z, area.width, area.height, area.depth,
                                             compressedTexSubImageFormat.format,
                                             static_cast<GLsizei>(imageSize), pixels);
     }
     else
     {
@@ -521,32 +524,32 @@ gl::Error TextureGL::copyImage(GLenum ta
 {
     nativegl::CopyTexImageImageFormat copyTexImageFormat = nativegl::GetCopyTexImageImageFormat(
         mFunctions, mWorkarounds, internalFormat, source->getImplementationColorReadType());
 
     LevelInfoGL levelInfo = GetLevelInfo(internalFormat, copyTexImageFormat.internalFormat);
     if (levelInfo.lumaWorkaround.enabled)
     {
         gl::Error error = mBlitter->copyImageToLUMAWorkaroundTexture(
-            mTextureID, mState.mTarget, target, levelInfo.sourceFormat, level, sourceArea,
+            mTextureID, getTarget(), target, levelInfo.sourceFormat, level, sourceArea,
             copyTexImageFormat.internalFormat, source);
         if (error.isError())
         {
             return error;
         }
     }
     else
     {
         const FramebufferGL *sourceFramebufferGL = GetImplAs<FramebufferGL>(source);
 
-        mStateManager->bindTexture(mState.mTarget, mTextureID);
+        mStateManager->bindTexture(getTarget(), mTextureID);
         mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER,
                                        sourceFramebufferGL->getFramebufferID());
 
-        if (UseTexImage2D(mState.mTarget))
+        if (UseTexImage2D(getTarget()))
         {
             mFunctions->copyTexImage2D(target, static_cast<GLint>(level),
                                        copyTexImageFormat.internalFormat, sourceArea.x,
                                        sourceArea.y, sourceArea.width, sourceArea.height, 0);
         }
         else
         {
             UNREACHABLE();
@@ -558,64 +561,127 @@ gl::Error TextureGL::copyImage(GLenum ta
     return gl::Error(GL_NO_ERROR);
 }
 
 gl::Error TextureGL::copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
                                   const gl::Framebuffer *source)
 {
     const FramebufferGL *sourceFramebufferGL = GetImplAs<FramebufferGL>(source);
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
+    mStateManager->bindTexture(getTarget(), mTextureID);
     mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER, sourceFramebufferGL->getFramebufferID());
 
     const LevelInfoGL &levelInfo = mLevelInfo[level];
     if (levelInfo.lumaWorkaround.enabled)
     {
         gl::Error error = mBlitter->copySubImageToLUMAWorkaroundTexture(
-            mTextureID, mState.mTarget, target, levelInfo.sourceFormat, level, destOffset,
-            sourceArea, source);
+            mTextureID, getTarget(), target, levelInfo.sourceFormat, level, destOffset, sourceArea,
+            source);
         if (error.isError())
         {
             return error;
         }
     }
     else
     {
-        if (UseTexImage2D(mState.mTarget))
+        if (UseTexImage2D(getTarget()))
         {
             ASSERT(destOffset.z == 0);
             mFunctions->copyTexSubImage2D(target, static_cast<GLint>(level), destOffset.x,
                                           destOffset.y, sourceArea.x, sourceArea.y,
                                           sourceArea.width, sourceArea.height);
         }
-        else if (UseTexImage3D(mState.mTarget))
+        else if (UseTexImage3D(getTarget()))
         {
             mFunctions->copyTexSubImage3D(target, static_cast<GLint>(level), destOffset.x,
                                           destOffset.y, destOffset.z, sourceArea.x, sourceArea.y,
                                           sourceArea.width, sourceArea.height);
         }
         else
         {
             UNREACHABLE();
         }
     }
 
     return gl::Error(GL_NO_ERROR);
 }
 
-gl::Error TextureGL::setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size)
+gl::Error TextureGL::copyTexture(GLenum internalFormat,
+                                 GLenum type,
+                                 bool unpackFlipY,
+                                 bool unpackPremultiplyAlpha,
+                                 bool unpackUnmultiplyAlpha,
+                                 const gl::Texture *source)
+{
+    const TextureGL *sourceGL            = GetImplAs<TextureGL>(source);
+    const gl::ImageDesc &sourceImageDesc = sourceGL->mState.getImageDesc(source->getTarget(), 0);
+    gl::Rectangle sourceArea(0, 0, sourceImageDesc.size.width, sourceImageDesc.size.height);
+
+    GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalFormat, type);
+    reserveTexImageToBeFilled(getTarget(), 0, sizedInternalFormat, sourceImageDesc.size,
+                              internalFormat, type);
+
+    return copySubTextureHelper(gl::Offset(0, 0, 0), sourceArea, internalFormat, unpackFlipY,
+                                unpackPremultiplyAlpha, unpackUnmultiplyAlpha, source);
+}
+
+gl::Error TextureGL::copySubTexture(const gl::Offset &destOffset,
+                                    const gl::Rectangle &sourceArea,
+                                    bool unpackFlipY,
+                                    bool unpackPremultiplyAlpha,
+                                    bool unpackUnmultiplyAlpha,
+                                    const gl::Texture *source)
 {
-    // TODO: emulate texture storage with TexImage calls if on GL version <4.2 or the
-    // ARB_texture_storage extension is not available.
+    GLenum destFormat = mState.getImageDesc(mState.mTarget, 0).format.format;
+    return copySubTextureHelper(destOffset, sourceArea, destFormat, unpackFlipY,
+                                unpackPremultiplyAlpha, unpackUnmultiplyAlpha, source);
+}
+
+gl::Error TextureGL::copySubTextureHelper(const gl::Offset &destOffset,
+                                          const gl::Rectangle &sourceArea,
+                                          GLenum destFormat,
+                                          bool unpackFlipY,
+                                          bool unpackPremultiplyAlpha,
+                                          bool unpackUnmultiplyAlpha,
+                                          const gl::Texture *source)
+{
+    TextureGL *sourceGL                  = GetImplAs<TextureGL>(source);
+    const gl::ImageDesc &sourceImageDesc = sourceGL->mState.getImageDesc(source->getTarget(), 0);
+
+    // Check is this is a simple copySubTexture that can be done with a copyTexSubImage
+    bool needsLumaWorkaround = sourceGL->mLevelInfo[0].lumaWorkaround.enabled;
 
+    GLenum sourceFormat = sourceImageDesc.format.format;
+    bool sourceFormatContainSupersetOfDestFormat =
+        (sourceFormat == destFormat && sourceFormat != GL_BGRA_EXT) ||
+        (sourceFormat == GL_RGBA && destFormat == GL_RGB);
+
+    if (source->getTarget() == GL_TEXTURE_2D && getTarget() == GL_TEXTURE_2D && !unpackFlipY &&
+        unpackPremultiplyAlpha == unpackUnmultiplyAlpha && !needsLumaWorkaround &&
+        sourceFormatContainSupersetOfDestFormat)
+    {
+        return mBlitter->copyTexSubImage(sourceGL, this, sourceArea, destOffset);
+    }
+
+    // We can't use copyTexSubImage, do a manual copy
+    return mBlitter->copySubTexture(sourceGL, this, sourceImageDesc.size, sourceArea, destOffset,
+                                    needsLumaWorkaround, sourceGL->mLevelInfo[0].sourceFormat,
+                                    unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
+}
+
+gl::Error TextureGL::setStorage(GLenum target,
+                                size_t levels,
+                                GLenum internalFormat,
+                                const gl::Extents &size)
+{
     nativegl::TexStorageFormat texStorageFormat =
         nativegl::GetTexStorageFormat(mFunctions, mWorkarounds, internalFormat);
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
-    if (UseTexImage2D(mState.mTarget))
+    mStateManager->bindTexture(getTarget(), mTextureID);
+    if (UseTexImage2D(getTarget()))
     {
         ASSERT(size.depth == 1);
         if (mFunctions->texStorage2D)
         {
             mFunctions->texStorage2D(target, static_cast<GLsizei>(levels),
                                      texStorageFormat.internalFormat, size.width, size.height);
         }
         else
@@ -629,45 +695,46 @@ gl::Error TextureGL::setStorage(GLenum t
             ASSERT(internalFormatInfo.pixelBytes != 0);
 
             for (size_t level = 0; level < levels; level++)
             {
                 gl::Extents levelSize(std::max(size.width >> level, 1),
                                       std::max(size.height >> level, 1),
                                       1);
 
-                if (mState.mTarget == GL_TEXTURE_2D)
+                if (getTarget() == GL_TEXTURE_2D)
                 {
                     if (internalFormatInfo.compressed)
                     {
                         GLuint dataSize = 0;
-                        ANGLE_TRY_RESULT(internalFormatInfo.computeCompressedImageSize(levelSize),
+                        ANGLE_TRY_RESULT(internalFormatInfo.computeCompressedImageSize(
+                                             GL_UNSIGNED_BYTE, levelSize),
                                          dataSize);
                         mFunctions->compressedTexImage2D(target, static_cast<GLint>(level),
                                                          texStorageFormat.internalFormat,
                                                          levelSize.width, levelSize.height, 0,
                                                          static_cast<GLsizei>(dataSize), nullptr);
                     }
                     else
                     {
                         mFunctions->texImage2D(target, static_cast<GLint>(level),
                                                texStorageFormat.internalFormat, levelSize.width,
                                                levelSize.height, 0, internalFormatInfo.format,
                                                internalFormatInfo.type, nullptr);
                     }
                 }
-                else if (mState.mTarget == GL_TEXTURE_CUBE_MAP)
+                else if (getTarget() == GL_TEXTURE_CUBE_MAP)
                 {
                     for (GLenum face = gl::FirstCubeMapTextureTarget; face <= gl::LastCubeMapTextureTarget; face++)
                     {
                         if (internalFormatInfo.compressed)
                         {
                             GLuint dataSize = 0;
                             ANGLE_TRY_RESULT(internalFormatInfo.computeCompressedImageSize(
-                                                 levelSize),
+                                                 GL_UNSIGNED_BYTE, levelSize),
                                              dataSize);
                             mFunctions->compressedTexImage2D(
                                 face, static_cast<GLint>(level), texStorageFormat.internalFormat,
                                 levelSize.width, levelSize.height, 0,
                                 static_cast<GLsizei>(dataSize), nullptr);
                         }
                         else
                         {
@@ -680,17 +747,17 @@ gl::Error TextureGL::setStorage(GLenum t
                 }
                 else
                 {
                     UNREACHABLE();
                 }
             }
         }
     }
-    else if (UseTexImage3D(mState.mTarget))
+    else if (UseTexImage3D(getTarget()))
     {
         if (mFunctions->texStorage3D)
         {
             mFunctions->texStorage3D(target, static_cast<GLsizei>(levels),
                                      texStorageFormat.internalFormat, size.width, size.height,
                                      size.depth);
         }
         else
@@ -702,23 +769,23 @@ gl::Error TextureGL::setStorage(GLenum t
 
             // Internal format must be sized
             ASSERT(internalFormatInfo.pixelBytes != 0);
 
             for (GLsizei i = 0; i < static_cast<GLsizei>(levels); i++)
             {
                 gl::Extents levelSize(
                     std::max(size.width >> i, 1), std::max(size.height >> i, 1),
-                    mState.mTarget == GL_TEXTURE_3D ? std::max(size.depth >> i, 1) : size.depth);
+                    getTarget() == GL_TEXTURE_3D ? std::max(size.depth >> i, 1) : size.depth);
 
                 if (internalFormatInfo.compressed)
                 {
                     GLuint dataSize = 0;
                     ANGLE_TRY_RESULT(
-                        internalFormatInfo.computeCompressedImageSize(levelSize),
+                        internalFormatInfo.computeCompressedImageSize(GL_UNSIGNED_BYTE, levelSize),
                         dataSize);
                     mFunctions->compressedTexImage3D(target, i, texStorageFormat.internalFormat,
                                                      levelSize.width, levelSize.height,
                                                      levelSize.depth, 0,
                                                      static_cast<GLsizei>(dataSize), nullptr);
                 }
                 else
                 {
@@ -745,48 +812,48 @@ gl::Error TextureGL::setImageExternal(GL
                                       const egl::Stream::GLTextureDescription &desc)
 {
     UNIMPLEMENTED();
     return gl::Error(GL_INVALID_OPERATION);
 }
 
 gl::Error TextureGL::generateMipmap()
 {
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
-    mFunctions->generateMipmap(mState.mTarget);
+    mStateManager->bindTexture(getTarget(), mTextureID);
+    mFunctions->generateMipmap(getTarget());
 
     const GLuint effectiveBaseLevel = mState.getEffectiveBaseLevel();
     const GLuint maxLevel           = mState.getMipmapMaxLevel();
 
     ASSERT(maxLevel < mLevelInfo.size());
 
     setLevelInfo(effectiveBaseLevel, maxLevel - effectiveBaseLevel, mLevelInfo[effectiveBaseLevel]);
 
     return gl::Error(GL_NO_ERROR);
 }
 
 void TextureGL::bindTexImage(egl::Surface *surface)
 {
-    ASSERT(mState.mTarget == GL_TEXTURE_2D);
+    ASSERT(getTarget() == GL_TEXTURE_2D);
 
     // Make sure this texture is bound
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
+    mStateManager->bindTexture(getTarget(), mTextureID);
 
     setLevelInfo(0, 1, LevelInfoGL());
 }
 
 void TextureGL::releaseTexImage()
 {
     // Not all Surface implementations reset the size of mip 0 when releasing, do it manually
-    ASSERT(mState.mTarget == GL_TEXTURE_2D);
+    ASSERT(getTarget() == GL_TEXTURE_2D);
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
-    if (UseTexImage2D(mState.mTarget))
+    mStateManager->bindTexture(getTarget(), mTextureID);
+    if (UseTexImage2D(getTarget()))
     {
-        mFunctions->texImage2D(mState.mTarget, 0, GL_RGBA, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE,
+        mFunctions->texImage2D(getTarget(), 0, GL_RGBA, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE,
                                nullptr);
     }
     else
     {
         UNREACHABLE();
     }
 }
 
@@ -798,98 +865,108 @@ gl::Error TextureGL::setEGLImageTarget(G
 
 void TextureGL::syncState(const gl::Texture::DirtyBits &dirtyBits)
 {
     if (dirtyBits.none() && mLocalDirtyBits.none())
     {
         return;
     }
 
-    mStateManager->bindTexture(mState.mTarget, mTextureID);
+    mStateManager->bindTexture(getTarget(), mTextureID);
 
     if (dirtyBits[gl::Texture::DIRTY_BIT_BASE_LEVEL] || dirtyBits[gl::Texture::DIRTY_BIT_MAX_LEVEL])
     {
         // Don't know if the previous base level was using any workarounds, always re-sync the
         // workaround dirty bits
         mLocalDirtyBits |= GetLevelWorkaroundDirtyBits();
     }
 
     for (auto dirtyBit : angle::IterateBitSet(dirtyBits | mLocalDirtyBits))
     {
         switch (dirtyBit)
         {
             case gl::Texture::DIRTY_BIT_MIN_FILTER:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_MIN_FILTER,
-                                          mState.getSamplerState().minFilter);
+                mAppliedSampler.minFilter = mState.getSamplerState().minFilter;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_MIN_FILTER,
+                                          mAppliedSampler.minFilter);
                 break;
             case gl::Texture::DIRTY_BIT_MAG_FILTER:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_MAG_FILTER,
-                                          mState.getSamplerState().magFilter);
+                mAppliedSampler.magFilter = mState.getSamplerState().magFilter;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_MAG_FILTER,
+                                          mAppliedSampler.magFilter);
                 break;
             case gl::Texture::DIRTY_BIT_WRAP_S:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_WRAP_S,
-                                          mState.getSamplerState().wrapS);
+                mAppliedSampler.wrapS = mState.getSamplerState().wrapS;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_WRAP_S, mAppliedSampler.wrapS);
                 break;
             case gl::Texture::DIRTY_BIT_WRAP_T:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_WRAP_T,
-                                          mState.getSamplerState().wrapT);
+                mAppliedSampler.wrapT = mState.getSamplerState().wrapT;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_WRAP_T, mAppliedSampler.wrapT);
                 break;
             case gl::Texture::DIRTY_BIT_WRAP_R:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_WRAP_R,
-                                          mState.getSamplerState().wrapR);
+                mAppliedSampler.wrapR = mState.getSamplerState().wrapR;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_WRAP_R, mAppliedSampler.wrapR);
                 break;
             case gl::Texture::DIRTY_BIT_MAX_ANISOTROPY:
-                mFunctions->texParameterf(mState.mTarget, GL_TEXTURE_MAX_ANISOTROPY_EXT,
-                                          mState.getSamplerState().maxAnisotropy);
+                mAppliedSampler.maxAnisotropy = mState.getSamplerState().maxAnisotropy;
+                mFunctions->texParameterf(getTarget(), GL_TEXTURE_MAX_ANISOTROPY_EXT,
+                                          mAppliedSampler.maxAnisotropy);
                 break;
             case gl::Texture::DIRTY_BIT_MIN_LOD:
-                mFunctions->texParameterf(mState.mTarget, GL_TEXTURE_MIN_LOD,
-                                          mState.getSamplerState().minLod);
+                mAppliedSampler.minLod = mState.getSamplerState().minLod;
+                mFunctions->texParameterf(getTarget(), GL_TEXTURE_MIN_LOD, mAppliedSampler.minLod);
                 break;
             case gl::Texture::DIRTY_BIT_MAX_LOD:
-                mFunctions->texParameterf(mState.mTarget, GL_TEXTURE_MAX_LOD,
-                                          mState.getSamplerState().maxLod);
+                mAppliedSampler.maxLod = mState.getSamplerState().maxLod;
+                mFunctions->texParameterf(getTarget(), GL_TEXTURE_MAX_LOD, mAppliedSampler.maxLod);
                 break;
             case gl::Texture::DIRTY_BIT_COMPARE_MODE:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_COMPARE_MODE,
-                                          mState.getSamplerState().compareMode);
+                mAppliedSampler.compareMode = mState.getSamplerState().compareMode;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_COMPARE_MODE,
+                                          mAppliedSampler.compareMode);
                 break;
             case gl::Texture::DIRTY_BIT_COMPARE_FUNC:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_COMPARE_FUNC,
-                                          mState.getSamplerState().compareFunc);
+                mAppliedSampler.compareFunc = mState.getSamplerState().compareFunc;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_COMPARE_FUNC,
+                                          mAppliedSampler.compareFunc);
                 break;
             case gl::Texture::DIRTY_BIT_SRGB_DECODE:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_SRGB_DECODE_EXT,
-                                          mState.getSamplerState().sRGBDecode);
+                mAppliedSampler.sRGBDecode = mState.getSamplerState().sRGBDecode;
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_SRGB_DECODE_EXT,
+                                          mAppliedSampler.sRGBDecode);
                 break;
 
             // Texture state
             case gl::Texture::DIRTY_BIT_SWIZZLE_RED:
                 syncTextureStateSwizzle(mFunctions, GL_TEXTURE_SWIZZLE_R,
-                                        mState.getSwizzleState().swizzleRed);
+                                        mState.getSwizzleState().swizzleRed,
+                                        &mAppliedSwizzle.swizzleRed);
                 break;
             case gl::Texture::DIRTY_BIT_SWIZZLE_GREEN:
                 syncTextureStateSwizzle(mFunctions, GL_TEXTURE_SWIZZLE_G,
-                                        mState.getSwizzleState().swizzleGreen);
+                                        mState.getSwizzleState().swizzleGreen,
+                                        &mAppliedSwizzle.swizzleGreen);
                 break;
             case gl::Texture::DIRTY_BIT_SWIZZLE_BLUE:
                 syncTextureStateSwizzle(mFunctions, GL_TEXTURE_SWIZZLE_B,
-                                        mState.getSwizzleState().swizzleBlue);
+                                        mState.getSwizzleState().swizzleBlue,
+                                        &mAppliedSwizzle.swizzleBlue);
                 break;
             case gl::Texture::DIRTY_BIT_SWIZZLE_ALPHA:
                 syncTextureStateSwizzle(mFunctions, GL_TEXTURE_SWIZZLE_A,
-                                        mState.getSwizzleState().swizzleAlpha);
+                                        mState.getSwizzleState().swizzleAlpha,
+                                        &mAppliedSwizzle.swizzleAlpha);
                 break;
             case gl::Texture::DIRTY_BIT_BASE_LEVEL:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_BASE_LEVEL,
-                                          mState.getEffectiveBaseLevel());
+                mAppliedBaseLevel = mState.getEffectiveBaseLevel();
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_BASE_LEVEL, mAppliedBaseLevel);
                 break;
             case gl::Texture::DIRTY_BIT_MAX_LEVEL:
-                mFunctions->texParameteri(mState.mTarget, GL_TEXTURE_MAX_LEVEL,
-                                          mState.getEffectiveMaxLevel());
+                mAppliedMaxLevel = mState.getEffectiveMaxLevel();
+                mFunctions->texParameteri(getTarget(), GL_TEXTURE_MAX_LEVEL, mAppliedMaxLevel);
                 break;
             case gl::Texture::DIRTY_BIT_USAGE:
                 break;
 
             default:
                 UNREACHABLE();
         }
     }
@@ -897,17 +974,61 @@ void TextureGL::syncState(const gl::Text
     mLocalDirtyBits.reset();
 }
 
 bool TextureGL::hasAnyDirtyBit() const
 {
     return mLocalDirtyBits.any();
 }
 
-void TextureGL::syncTextureStateSwizzle(const FunctionsGL *functions, GLenum name, GLenum value)
+void TextureGL::setMinFilter(GLenum filter)
+{
+    if (filter != mAppliedSampler.minFilter)
+    {
+        mAppliedSampler.minFilter = filter;
+        mLocalDirtyBits.set(gl::Texture::DIRTY_BIT_MIN_FILTER);
+
+        mStateManager->bindTexture(getTarget(), mTextureID);
+        mFunctions->texParameteri(getTarget(), GL_TEXTURE_MIN_FILTER, filter);
+    }
+}
+void TextureGL::setMagFilter(GLenum filter)
+{
+    if (filter != mAppliedSampler.magFilter)
+    {
+        mAppliedSampler.magFilter = filter;
+        mLocalDirtyBits.set(gl::Texture::DIRTY_BIT_MAG_FILTER);
+
+        mStateManager->bindTexture(getTarget(), mTextureID);
+        mFunctions->texParameteri(getTarget(), GL_TEXTURE_MAG_FILTER, filter);
+    }
+}
+
+void TextureGL::setSwizzle(GLint swizzle[4])
+{
+    gl::SwizzleState resultingSwizzle =
+        gl::SwizzleState(swizzle[0], swizzle[1], swizzle[2], swizzle[3]);
+
+    if (resultingSwizzle != mAppliedSwizzle)
+    {
+        mAppliedSwizzle = resultingSwizzle;
+        mLocalDirtyBits.set(gl::Texture::DIRTY_BIT_SWIZZLE_RED);
+        mLocalDirtyBits.set(gl::Texture::DIRTY_BIT_SWIZZLE_GREEN);
+        mLocalDirtyBits.set(gl::Texture::DIRTY_BIT_SWIZZLE_BLUE);
+        mLocalDirtyBits.set(gl::Texture::DIRTY_BIT_SWIZZLE_ALPHA);
+
+        mStateManager->bindTexture(getTarget(), mTextureID);
+        mFunctions->texParameteriv(getTarget(), GL_TEXTURE_SWIZZLE_RGBA, swizzle);
+    }
+}
+
+void TextureGL::syncTextureStateSwizzle(const FunctionsGL *functions,
+                                        GLenum name,
+                                        GLenum value,
+                                        GLenum *outValue)
 {
     const LevelInfoGL &levelInfo = mLevelInfo[mState.getEffectiveBaseLevel()];
     GLenum resultSwizzle         = value;
     if (levelInfo.lumaWorkaround.enabled || levelInfo.depthStencilWorkaround)
     {
         if (levelInfo.lumaWorkaround.enabled)
         {
             switch (value)
@@ -1005,17 +1126,18 @@ void TextureGL::syncTextureStateSwizzle(
         }
         else
         {
             UNREACHABLE();
         }
 
     }
 
-    functions->texParameteri(mState.mTarget, name, resultSwizzle);
+    *outValue = resultSwizzle;
+    functions->texParameteri(getTarget(), name, resultSwizzle);
 }
 
 void TextureGL::setLevelInfo(size_t level, size_t levelCount, const LevelInfoGL &levelInfo)
 {
     ASSERT(levelCount > 0 && level + levelCount < mLevelInfo.size());
 
     GLuint baseLevel              = mState.getEffectiveBaseLevel();
     bool needsResync              = level <= baseLevel && level + levelCount >= baseLevel &&
@@ -1031,9 +1153,13 @@ void TextureGL::setLevelInfo(size_t leve
     }
 }
 
 GLuint TextureGL::getTextureID() const
 {
     return mTextureID;
 }
 
+GLenum TextureGL::getTarget() const
+{
+    return mState.mTarget;
 }
+}
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/TextureGL.h
+++ b/gfx/angle/src/libANGLE/renderer/gl/TextureGL.h
@@ -69,44 +69,71 @@ class TextureGL : public TextureImpl
     gl::Error setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
                                     const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
 
     gl::Error copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
                         const gl::Framebuffer *source) override;
     gl::Error copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
                            const gl::Framebuffer *source) override;
 
+    gl::Error copyTexture(GLenum internalFormat,
+                          GLenum type,
+                          bool unpackFlipY,
+                          bool unpackPremultiplyAlpha,
+                          bool unpackUnmultiplyAlpha,
+                          const gl::Texture *source) override;
+    gl::Error copySubTexture(const gl::Offset &destOffset,
+                             const gl::Rectangle &sourceArea,
+                             bool unpackFlipY,
+                             bool unpackPremultiplyAlpha,
+                             bool unpackUnmultiplyAlpha,
+                             const gl::Texture *source) override;
+    gl::Error copySubTextureHelper(const gl::Offset &destOffset,
+                                   const gl::Rectangle &sourceArea,
+                                   GLenum destFormat,
+                                   bool unpackFlipY,
+                                   bool unpackPremultiplyAlpha,
+                                   bool unpackUnmultiplyAlpha,
+                                   const gl::Texture *source);
+
     gl::Error setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size) override;
 
     gl::Error setImageExternal(GLenum target,
                                egl::Stream *stream,
                                const egl::Stream::GLTextureDescription &desc) override;
 
     gl::Error generateMipmap() override;
 
     void bindTexImage(egl::Surface *surface) override;
     void releaseTexImage() override;
 
     gl::Error setEGLImageTarget(GLenum target, egl::Image *image) override;
 
     GLuint getTextureID() const;
+    GLenum getTarget() const;
 
     void setBaseLevel(GLuint) override {}
 
     void syncState(const gl::Texture::DirtyBits &dirtyBits) override;
     bool hasAnyDirtyBit() const;
 
+    void setMinFilter(GLenum filter);
+    void setMagFilter(GLenum filter);
+
+    void setSwizzle(GLint swizzle[4]);
+
   private:
     void setImageHelper(GLenum target,
                         size_t level,
                         GLenum internalFormat,
                         const gl::Extents &size,
                         GLenum format,
                         GLenum type,
                         const uint8_t *pixels);
+    // This changes the current pixel unpack state that will have to be reapplied.
     void reserveTexImageToBeFilled(GLenum target,
                                    size_t level,
                                    GLenum internalFormat,
                                    const gl::Extents &size,
                                    GLenum format,
                                    GLenum type);
     gl::Error setSubImageRowByRowWorkaround(GLenum target,
                                             size_t level,
@@ -119,27 +146,34 @@ class TextureGL : public TextureImpl
     gl::Error setSubImagePaddingWorkaround(GLenum target,
                                            size_t level,
                                            const gl::Box &area,
                                            GLenum format,
                                            GLenum type,
                                            const gl::PixelUnpackState &unpack,
                                            const uint8_t *pixels);
 
-    void syncTextureStateSwizzle(const FunctionsGL *functions, GLenum name, GLenum value);
+    void syncTextureStateSwizzle(const FunctionsGL *functions,
+                                 GLenum name,
+                                 GLenum value,
+                                 GLenum *outValue);
 
     void setLevelInfo(size_t level, size_t levelCount, const LevelInfoGL &levelInfo);
 
     const FunctionsGL *mFunctions;
     const WorkaroundsGL &mWorkarounds;
     StateManagerGL *mStateManager;
     BlitGL *mBlitter;
 
     std::vector<LevelInfoGL> mLevelInfo;
     gl::Texture::DirtyBits mLocalDirtyBits;
 
-    mutable gl::TextureState mAppliedTextureState;
+    gl::SwizzleState mAppliedSwizzle;
+    gl::SamplerState mAppliedSampler;
+    GLuint mAppliedBaseLevel;
+    GLuint mAppliedMaxLevel;
+
     GLuint mTextureID;
 };
 
 }
 
 #endif // LIBANGLE_RENDERER_GL_TEXTUREGL_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/renderergl_utils.cpp
+++ b/gfx/angle/src/libANGLE/renderer/gl/renderergl_utils.cpp
@@ -11,16 +11,17 @@
 
 #include <limits>
 
 #include "common/mathutil.h"
 #include "libANGLE/Buffer.h"
 #include "libANGLE/Caps.h"
 #include "libANGLE/formatutils.h"
 #include "libANGLE/renderer/gl/FunctionsGL.h"
+#include "libANGLE/renderer/gl/QueryGL.h"
 #include "libANGLE/renderer/gl/WorkaroundsGL.h"
 #include "libANGLE/renderer/gl/formatutilsgl.h"
 
 #include <algorithm>
 #include <sstream>
 
 using angle::CheckedNumeric;
 
@@ -157,17 +158,18 @@ static GLfloat QueryGLFloatRange(const F
     GLfloat result[2] = {};
     functions->getFloatv(name, result);
     return result[index];
 }
 
 static gl::TypePrecision QueryTypePrecision(const FunctionsGL *functions, GLenum shaderType, GLenum precisionType)
 {
     gl::TypePrecision precision;
-    functions->getShaderPrecisionFormat(shaderType, precisionType, precision.range, &precision.precision);
+    functions->getShaderPrecisionFormat(shaderType, precisionType, precision.range.data(),
+                                        &precision.precision);
     return precision;
 }
 
 static GLint QueryQueryValue(const FunctionsGL *functions, GLenum target, GLenum name)
 {
     GLint result;
     functions->getQueryiv(target, name, &result);
     return result;
@@ -542,20 +544,20 @@ void GenerateCaps(const FunctionsGL *fun
     {
         caps->maxSamples = QuerySingleGLInt(functions, GL_MAX_SAMPLES);
     }
     else
     {
         LimitVersion(maxSupportedESVersion, gl::Version(2, 0));
     }
 
-    // Non-constant sampler array indexing is required for OpenGL ES 2 and OpenGL ES after 3.2.
-    // However having it available on OpenGL ES 2 is a specification bug, and using this
-    // indexing in WebGL is undefined. Requiring this feature would break WebGL 1 for some users
-    // so we don't check for it. (it is present with ESSL 100, ESSL >= 320, GLSL >= 400 and
+    // Non-constant sampler array indexing is required for OpenGL ES 2 and OpenGL ES after 3.2.
+    // However having it available on OpenGL ES 2 is a specification bug, and using this
+    // indexing in WebGL is undefined. Requiring this feature would break WebGL 1 for some users
+    // so we don't check for it. (it is present with ESSL 100, ESSL >= 320, GLSL >= 400 and
     // GL_ARB_gpu_shader5)
 
     // Check if sampler objects are supported
     if (!functions->isAtLeastGL(gl::Version(3, 3)) &&
         !functions->hasGLExtension("GL_ARB_sampler_objects") &&
         !functions->isAtLeastGLES(gl::Version(3, 0)))
     {
         // Can't support ES3 without sampler objects
@@ -786,21 +788,17 @@ void GenerateCaps(const FunctionsGL *fun
     extensions->mapBufferRange = functions->isAtLeastGL(gl::Version(3, 0)) || functions->hasGLExtension("GL_ARB_map_buffer_range") ||
                                  functions->isAtLeastGLES(gl::Version(3, 0)) || functions->hasGLESExtension("GL_EXT_map_buffer_range");
     extensions->textureNPOT = functions->standard == STANDARD_GL_DESKTOP ||
                               functions->isAtLeastGLES(gl::Version(3, 0)) || functions->hasGLESExtension("GL_OES_texture_npot");
     extensions->drawBuffers = functions->isAtLeastGL(gl::Version(2, 0)) || functions->hasGLExtension("ARB_draw_buffers") ||
                               functions->isAtLeastGLES(gl::Version(3, 0)) || functions->hasGLESExtension("GL_EXT_draw_buffers");
     extensions->textureStorage = true;
     extensions->textureFilterAnisotropic = functions->hasGLExtension("GL_EXT_texture_filter_anisotropic") || functions->hasGLESExtension("GL_EXT_texture_filter_anisotropic");
-    extensions->occlusionQueryBoolean =
-        functions->isAtLeastGL(gl::Version(1, 5)) ||
-        functions->hasGLExtension("GL_ARB_occlusion_query2") ||
-        functions->isAtLeastGLES(gl::Version(3, 0)) ||
-        functions->hasGLESExtension("GL_EXT_occlusion_query_boolean");
+    extensions->occlusionQueryBoolean    = nativegl::SupportsOcclusionQueries(functions);
     extensions->maxTextureAnisotropy = extensions->textureFilterAnisotropic ? QuerySingleGLFloat(functions, GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0.0f;
     extensions->fence = functions->hasGLExtension("GL_NV_fence") || functions->hasGLESExtension("GL_NV_fence");
     extensions->blendMinMax = functions->isAtLeastGL(gl::Version(1, 5)) || functions->hasGLExtension("GL_EXT_blend_minmax") ||
                               functions->isAtLeastGLES(gl::Version(3, 0)) || functions->hasGLESExtension("GL_EXT_blend_minmax");
     extensions->framebufferBlit = (functions->blitFramebuffer != nullptr);
     extensions->framebufferMultisample = caps->maxSamples > 0;
     extensions->standardDerivatives = functions->isAtLeastGL(gl::Version(2, 0)) || functions->hasGLExtension("GL_ARB_fragment_shader") ||
                                       functions->isAtLeastGLES(gl::Version(3, 0)) || functions->hasGLESExtension("GL_OES_standard_derivatives");
@@ -848,16 +846,19 @@ void GenerateCaps(const FunctionsGL *fun
 
     extensions->robustness = functions->isAtLeastGL(gl::Version(4, 5)) ||
                              functions->hasGLExtension("GL_KHR_robustness") ||
                              functions->hasGLExtension("GL_ARB_robustness") ||
                              functions->isAtLeastGLES(gl::Version(3, 2)) ||
                              functions->hasGLESExtension("GL_KHR_robustness") ||
                              functions->hasGLESExtension("GL_EXT_robustness");
 
+    extensions->copyTexture = true;
+    extensions->syncQuery   = SyncQueryGL::IsSupported(functions);
+
     // NV_path_rendering
     // We also need interface query which is available in
     // >= 4.3 core or ARB_interface_query or >= GLES 3.1
     const bool canEnableGLPathRendering =
         functions->hasGLExtension("GL_NV_path_rendering") &&
         (functions->hasGLExtension("GL_ARB_program_interface_query") ||
          functions->isAtLeastGL(gl::Version(4, 3)));
 
@@ -886,16 +887,24 @@ void GenerateCaps(const FunctionsGL *fun
                                    functions->hasGLESExtension("GL_EXT_sRGB_write_control");
 
 #if defined(ANGLE_PLATFORM_ANDROID)
     // SRGB blending does not appear to work correctly on the Nexus 5. Writing to an SRGB
     // framebuffer with GL_FRAMEBUFFER_SRGB enabled and then reading back returns the same value.
     // Disabling GL_FRAMEBUFFER_SRGB will then convert in the wrong direction.
     extensions->sRGBWriteControl = false;
 #endif
+
+    // EXT_discard_framebuffer can be implemented as long as glDiscardFramebufferEXT or
+    // glInvalidateFramebuffer is available
+    extensions->discardFramebuffer = functions->isAtLeastGL(gl::Version(4, 3)) ||
+                                     functions->hasGLExtension("GL_ARB_invalidate_subdata") ||
+                                     functions->isAtLeastGLES(gl::Version(3, 0)) ||
+                                     functions->hasGLESExtension("GL_EXT_discard_framebuffer") ||
+                                     functions->hasGLESExtension("GL_ARB_invalidate_subdata");
 }
 
 void GenerateWorkarounds(const FunctionsGL *functions, WorkaroundsGL *workarounds)
 {
     VendorID vendor = GetVendorID(functions);
 
     workarounds->dontRemoveInvariantForFragmentInput =
         functions->standard == STANDARD_GL_DESKTOP && IsAMD(vendor);
@@ -935,19 +944,38 @@ void GenerateWorkarounds(const Functions
 #if defined(ANGLE_PLATFORM_APPLE)
     workarounds->unpackLastRowSeparatelyForPaddingInclusion = true;
     workarounds->packLastRowSeparatelyForPaddingInclusion   = true;
 #else
     workarounds->unpackLastRowSeparatelyForPaddingInclusion = IsNvidia(vendor);
     workarounds->packLastRowSeparatelyForPaddingInclusion   = IsNvidia(vendor);
 #endif
 
-    workarounds->removeInvariantAndCentroidForESSL3 = functions->isAtMostGL(gl::Version(4, 1));
+    workarounds->removeInvariantAndCentroidForESSL3 =
+        functions->isAtMostGL(gl::Version(4, 1)) ||
+        (functions->standard == STANDARD_GL_DESKTOP && IsAMD(vendor));
+}
+
 }
 
+namespace nativegl
+{
+bool SupportsFenceSync(const FunctionsGL *functions)
+{
+    return functions->isAtLeastGL(gl::Version(3, 2)) || functions->hasGLExtension("GL_ARB_sync") ||
+           functions->isAtLeastGLES(gl::Version(3, 0));
+}
+
+bool SupportsOcclusionQueries(const FunctionsGL *functions)
+{
+    return functions->isAtLeastGL(gl::Version(1, 5)) ||
+           functions->hasGLExtension("GL_ARB_occlusion_query2") ||
+           functions->isAtLeastGLES(gl::Version(3, 0)) ||
+           functions->hasGLESExtension("GL_EXT_occlusion_query_boolean");
+}
 }
 
 bool CanMapBufferForRead(const FunctionsGL *functions)
 {
     return (functions->mapBufferRange != nullptr) ||
            (functions->mapBuffer != nullptr && functions->standard == STANDARD_GL_DESKTOP);
 }
 
@@ -1013,20 +1041,20 @@ gl::ErrorOrResult<bool> ShouldApplyLastR
     // last byte read or written. If it is past the end of the buffer, we will need to use the
     // workaround otherwise the driver will generate INVALID_OPERATION and not do the operation.
     CheckedNumeric<size_t> checkedEndByte;
     CheckedNumeric<size_t> pixelBytes;
     size_t rowPitch;
 
     const gl::InternalFormat &glFormat =
         gl::GetInternalFormatInfo(gl::GetSizedInternalFormat(format, type));
-    ANGLE_TRY_RESULT(glFormat.computePackUnpackEndByte(size, state, is3D), checkedEndByte);
-    ANGLE_TRY_RESULT(glFormat.computeRowPitch(size.width, state.alignment, state.rowLength),
+    ANGLE_TRY_RESULT(glFormat.computePackUnpackEndByte(type, size, state, is3D), checkedEndByte);
+    ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, size.width, state.alignment, state.rowLength),
                      rowPitch);
-    pixelBytes = glFormat.pixelBytes;
+    pixelBytes = glFormat.computePixelBytes(type);
 
     checkedEndByte += reinterpret_cast<intptr_t>(pixels);
 
     // At this point checkedEndByte is the actual last byte read.
     // The driver adds an extra row padding (if any), mimic it.
     ANGLE_TRY_CHECKED_MATH(pixelBytes);
     if (pixelBytes.ValueOrDie() * size.width < rowPitch)
     {
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/gl/renderergl_utils.h
+++ b/gfx/angle/src/libANGLE/renderer/gl/renderergl_utils.h
@@ -38,16 +38,22 @@ namespace nativegl_gl
 {
 
 void GenerateCaps(const FunctionsGL *functions, gl::Caps *caps, gl::TextureCapsMap *textureCapsMap,
                   gl::Extensions *extensions, gl::Version *maxSupportedESVersion);
 
 void GenerateWorkarounds(const FunctionsGL *functions, WorkaroundsGL *workarounds);
 }
 
+namespace nativegl
+{
+bool SupportsFenceSync(const FunctionsGL *functions);
+bool SupportsOcclusionQueries(const FunctionsGL *functions);
+}
+
 bool CanMapBufferForRead(const FunctionsGL *functions);
 uint8_t *MapBufferRangeWithFallback(const FunctionsGL *functions,
                                     GLenum target,
                                     size_t offset,
                                     size_t length,
                                     GLbitfield access);
 
 gl::ErrorOrResult<bool> ShouldApplyLastRowPaddingWorkaround(const gl::Extents &size,
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/renderer/null/BufferNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/BufferNULL.cpp
@@ -5,70 +5,83 @@
 //
 // BufferNULL.cpp:
 //    Implements the class methods for BufferNULL.
 //
 
 #include "libANGLE/renderer/null/BufferNULL.h"
 
 #include "common/debug.h"
+#include "common/utilities.h"
+#include "libANGLE/angletypes.h"
 
 namespace rx
 {
 
 BufferNULL::BufferNULL(const gl::BufferState &state) : BufferImpl(state)
 {
 }
 
 BufferNULL::~BufferNULL()
 {
 }
 
 gl::Error BufferNULL::setData(GLenum target, const void *data, size_t size, GLenum usage)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    mData.resize(size, 0);
+    if (size > 0 && data != nullptr)
+    {
+        memcpy(mData.data(), data, size);
+    }
+    return gl::NoError();
 }
 
 gl::Error BufferNULL::setSubData(GLenum target, const void *data, size_t size, size_t offset)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    if (size > 0)
+    {
+        memcpy(mData.data() + offset, data, size);
+    }
+    return gl::NoError();
 }
 
 gl::Error BufferNULL::copySubData(BufferImpl *source,
                                   GLintptr sourceOffset,
                                   GLintptr destOffset,
                                   GLsizeiptr size)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    BufferNULL *sourceNULL = GetAs<BufferNULL>(source);
+    if (size > 0)
+    {
+        memcpy(mData.data() + destOffset, sourceNULL->mData.data() + sourceOffset, size);
+    }
+    return gl::NoError();
 }
 
 gl::Error BufferNULL::map(GLenum access, GLvoid **mapPtr)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *mapPtr = mData.data();
+    return gl::NoError();
 }
 
 gl::Error BufferNULL::mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *mapPtr = mData.data() + offset;
+    return gl::NoError();
 }
 
 gl::Error BufferNULL::unmap(GLboolean *result)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *result = GL_TRUE;
+    return gl::NoError();
 }
 
 gl::Error BufferNULL::getIndexRange(GLenum type,
                                     size_t offset,
                                     size_t count,
                                     bool primitiveRestartEnabled,
                                     gl::IndexRange *outRange)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *outRange = gl::ComputeIndexRange(type, mData.data() + offset, count, primitiveRestartEnabled);
+    return gl::NoError();
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/BufferNULL.h
+++ b/gfx/angle/src/libANGLE/renderer/null/BufferNULL.h
@@ -31,13 +31,16 @@ class BufferNULL : public BufferImpl
     gl::Error mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) override;
     gl::Error unmap(GLboolean *result) override;
 
     gl::Error getIndexRange(GLenum type,
                             size_t offset,
                             size_t count,
                             bool primitiveRestartEnabled,
                             gl::IndexRange *outRange) override;
+
+  private:
+    std::vector<uint8_t> mData;
 };
 
 }  // namespace rx
 
 #endif  // LIBANGLE_RENDERER_NULL_BUFFERNULL_H_
--- a/gfx/angle/src/libANGLE/renderer/null/CompilerNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/CompilerNULL.cpp
@@ -19,19 +19,17 @@ CompilerNULL::CompilerNULL() : CompilerI
 }
 
 CompilerNULL::~CompilerNULL()
 {
 }
 
 gl::Error CompilerNULL::release()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 ShShaderOutput CompilerNULL::getTranslatorOutputType() const
 {
-    UNIMPLEMENTED();
-    return ShShaderOutput();
+    return SH_ESSL_OUTPUT;
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/ContextNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/ContextNULL.cpp
@@ -6,170 +6,317 @@
 // ContextNULL.cpp:
 //    Implements the class methods for ContextNULL.
 //
 
 #include "libANGLE/renderer/null/ContextNULL.h"
 
 #include "common/debug.h"
 
+#include "libANGLE/renderer/null/BufferNULL.h"
+#include "libANGLE/renderer/null/CompilerNULL.h"
+#include "libANGLE/renderer/null/DisplayNULL.h"
+#include "libANGLE/renderer/null/FenceNVNULL.h"
+#include "libANGLE/renderer/null/FenceSyncNULL.h"
+#include "libANGLE/renderer/null/FramebufferNULL.h"
+#include "libANGLE/renderer/null/ImageNULL.h"
+#include "libANGLE/renderer/null/PathNULL.h"
+#include "libANGLE/renderer/null/ProgramNULL.h"
+#include "libANGLE/renderer/null/QueryNULL.h"
+#include "libANGLE/renderer/null/RenderbufferNULL.h"
+#include "libANGLE/renderer/null/SamplerNULL.h"
+#include "libANGLE/renderer/null/ShaderNULL.h"
+#include "libANGLE/renderer/null/TextureNULL.h"
+#include "libANGLE/renderer/null/TransformFeedbackNULL.h"
+#include "libANGLE/renderer/null/VertexArrayNULL.h"
+
 namespace rx
 {
 
 ContextNULL::ContextNULL(const gl::ContextState &state) : ContextImpl(state)
 {
+    const gl::Version maxClientVersion(3, 1);
+    mCaps        = GenerateMinimumCaps(maxClientVersion);
+    mExtensions  = gl::Extensions();
+    mTextureCaps = GenerateMinimumTextureCapsMap(maxClientVersion, mExtensions);
 }
 
 ContextNULL::~ContextNULL()
 {
 }
 
 gl::Error ContextNULL::initialize()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error ContextNULL::flush()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error ContextNULL::finish()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error ContextNULL::drawArrays(GLenum mode, GLint first, GLsizei count)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error ContextNULL::drawArraysInstanced(GLenum mode,
                                            GLint first,
                                            GLsizei count,
                                            GLsizei instanceCount)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error ContextNULL::drawElements(GLenum mode,
                                     GLsizei count,
                                     GLenum type,
                                     const GLvoid *indices,
                                     const gl::IndexRange &indexRange)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error ContextNULL::drawElementsInstanced(GLenum mode,
                                              GLsizei count,
                                              GLenum type,
                                              const GLvoid *indices,
                                              GLsizei instances,
                                              const gl::IndexRange &indexRange)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error ContextNULL::drawRangeElements(GLenum mode,
                                          GLuint start,
                                          GLuint end,
                                          GLsizei count,
                                          GLenum type,
                                          const GLvoid *indices,
                                          const gl::IndexRange &indexRange)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
+}
+
+void ContextNULL::stencilFillPath(const gl::Path *path, GLenum fillMode, GLuint mask)
+{
+}
+
+void ContextNULL::stencilStrokePath(const gl::Path *path, GLint reference, GLuint mask)
+{
+}
+
+void ContextNULL::coverFillPath(const gl::Path *path, GLenum coverMode)
+{
+}
+
+void ContextNULL::coverStrokePath(const gl::Path *path, GLenum coverMode)
+{
+}
+
+void ContextNULL::stencilThenCoverFillPath(const gl::Path *path,
+                                           GLenum fillMode,
+                                           GLuint mask,
+                                           GLenum coverMode)
+{
+}
+
+void ContextNULL::stencilThenCoverStrokePath(const gl::Path *path,
+                                             GLint reference,
+                                             GLuint mask,
+                                             GLenum coverMode)
+{
+}
+
+void ContextNULL::coverFillPathInstanced(const std::vector<gl::Path *> &paths,
+                                         GLenum coverMode,
+                                         GLenum transformType,
+                                         const GLfloat *transformValues)
+{
+}
+
+void ContextNULL::coverStrokePathInstanced(const std::vector<gl::Path *> &paths,
+                                           GLenum coverMode,
+                                           GLenum transformType,
+                                           const GLfloat *transformValues)
+{
+}
+
+void ContextNULL::stencilFillPathInstanced(const std::vector<gl::Path *> &paths,
+                                           GLenum fillMode,
+                                           GLuint mask,
+                                           GLenum transformType,
+                                           const GLfloat *transformValues)
+{
+}
+
+void ContextNULL::stencilStrokePathInstanced(const std::vector<gl::Path *> &paths,
+                                             GLint reference,
+                                             GLuint mask,
+                                             GLenum transformType,
+                                             const GLfloat *transformValues)
+{
+}
+
+void ContextNULL::stencilThenCoverFillPathInstanced(const std::vector<gl::Path *> &paths,
+                                                    GLenum coverMode,
+                                                    GLenum fillMode,
+                                                    GLuint mask,
+                                                    GLenum transformType,
+                                                    const GLfloat *transformValues)
+{
+}
+
+void ContextNULL::stencilThenCoverStrokePathInstanced(const std::vector<gl::Path *> &paths,
+                                                      GLenum coverMode,
+                                                      GLint reference,
+                                                      GLuint mask,
+                                                      GLenum transformType,
+                                                      const GLfloat *transformValues)
+{
+}
+
+GLenum ContextNULL::getResetStatus()
+{
+    return GL_NO_ERROR;
+}
+
+std::string ContextNULL::getVendorString() const
+{
+    return "NULL";
+}
+
+std::string ContextNULL::getRendererDescription() const
+{
+    return "NULL";
+}
+
+void ContextNULL::insertEventMarker(GLsizei length, const char *marker)
+{
+}
+
+void ContextNULL::pushGroupMarker(GLsizei length, const char *marker)
+{
+}
+
+void ContextNULL::popGroupMarker()
+{
+}
+
+void ContextNULL::syncState(const gl::State &state, const gl::State::DirtyBits &dirtyBits)
+{
+}
+
+GLint ContextNULL::getGPUDisjoint()
+{
+    return 0;
+}
+
+GLint64 ContextNULL::getTimestamp()
+{
+    return 0;
+}
+
+void ContextNULL::onMakeCurrent(const gl::ContextState &data)
+{
+}
+
+const gl::Caps &ContextNULL::getNativeCaps() const
+{
+    return mCaps;
+}
+
+const gl::TextureCapsMap &ContextNULL::getNativeTextureCaps() const
+{
+    return mTextureCaps;
+}
+
+const gl::Extensions &ContextNULL::getNativeExtensions() const
+{
+    return mExtensions;
+}
+
+const gl::Limitations &ContextNULL::getNativeLimitations() const
+{
+    return mLimitations;
 }
 
 CompilerImpl *ContextNULL::createCompiler()
 {
-    UNIMPLEMENTED();
-    return static_cast<CompilerImpl *>(0);
+    return new CompilerNULL();
 }
 
 ShaderImpl *ContextNULL::createShader(const gl::ShaderState &data)
 {
-    UNIMPLEMENTED();
-    return static_cast<ShaderImpl *>(0);
+    return new ShaderNULL(data);
 }
 
 ProgramImpl *ContextNULL::createProgram(const gl::ProgramState &data)
 {
-    UNIMPLEMENTED();
-    return static_cast<ProgramImpl *>(0);
+    return new ProgramNULL(data);
 }
 
 FramebufferImpl *ContextNULL::createFramebuffer(const gl::FramebufferState &data)
 {
-    UNIMPLEMENTED();
-    return static_cast<FramebufferImpl *>(0);
+    return new FramebufferNULL(data);
 }
 
 TextureImpl *ContextNULL::createTexture(const gl::TextureState &state)
 {
-    UNIMPLEMENTED();
-    return static_cast<TextureImpl *>(0);
+    return new TextureNULL(state);
 }
 
 RenderbufferImpl *ContextNULL::createRenderbuffer()
 {
-    UNIMPLEMENTED();
-    return static_cast<RenderbufferImpl *>(0);
+    return new RenderbufferNULL();
 }
 
 BufferImpl *ContextNULL::createBuffer(const gl::BufferState &state)
 {
-    UNIMPLEMENTED();
-    return static_cast<BufferImpl *>(0);
+    return new BufferNULL(state);
 }
 
 VertexArrayImpl *ContextNULL::createVertexArray(const gl::VertexArrayState &data)
 {
-    UNIMPLEMENTED();
-    return static_cast<VertexArrayImpl *>(0);
+    return new VertexArrayNULL(data);
 }
 
 QueryImpl *ContextNULL::createQuery(GLenum type)
 {
-    UNIMPLEMENTED();
-    return static_cast<QueryImpl *>(0);
+    return new QueryNULL(type);
 }
 
 FenceNVImpl *ContextNULL::createFenceNV()
 {
-    UNIMPLEMENTED();
-    return static_cast<FenceNVImpl *>(0);
+    return new FenceNVNULL();
 }
 
 FenceSyncImpl *ContextNULL::createFenceSync()
 {
-    UNIMPLEMENTED();
-    return static_cast<FenceSyncImpl *>(0);
+    return new FenceSyncNULL();
 }
 
 TransformFeedbackImpl *ContextNULL::createTransformFeedback(const gl::TransformFeedbackState &state)
 {
-    UNIMPLEMENTED();
-    return static_cast<TransformFeedbackImpl *>(0);
+    return new TransformFeedbackNULL(state);
 }
 
 SamplerImpl *ContextNULL::createSampler()
 {
-    UNIMPLEMENTED();
-    return static_cast<SamplerImpl *>(0);
+    return new SamplerNULL();
 }
 
 std::vector<PathImpl *> ContextNULL::createPaths(GLsizei range)
 {
-    UNIMPLEMENTED();
-    return std::vector<PathImpl *>();
+    std::vector<PathImpl *> result(range);
+    for (GLsizei idx = 0; idx < range; idx++)
+    {
+        result[idx] = new PathNULL();
+    }
+    return result;
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/ContextNULL.h
+++ b/gfx/angle/src/libANGLE/renderer/null/ContextNULL.h
@@ -49,16 +49,88 @@ class ContextNULL : public ContextImpl
                                 GLuint start,
                                 GLuint end,
                                 GLsizei count,
                                 GLenum type,
                                 const GLvoid *indices,
                                 const gl::IndexRange &indexRange) override;
 
     // CHROMIUM_path_rendering path drawing methods.
+    void stencilFillPath(const gl::Path *path, GLenum fillMode, GLuint mask) override;
+    void stencilStrokePath(const gl::Path *path, GLint reference, GLuint mask) override;
+    void coverFillPath(const gl::Path *path, GLenum coverMode) override;
+    void coverStrokePath(const gl::Path *path, GLenum coverMode) override;
+    void stencilThenCoverFillPath(const gl::Path *path,
+                                  GLenum fillMode,
+                                  GLuint mask,
+                                  GLenum coverMode) override;
+
+    void stencilThenCoverStrokePath(const gl::Path *path,
+                                    GLint reference,
+                                    GLuint mask,
+                                    GLenum coverMode) override;
+
+    void coverFillPathInstanced(const std::vector<gl::Path *> &paths,
+                                GLenum coverMode,
+                                GLenum transformType,
+                                const GLfloat *transformValues) override;
+    void coverStrokePathInstanced(const std::vector<gl::Path *> &paths,
+                                  GLenum coverMode,
+                                  GLenum transformType,
+                                  const GLfloat *transformValues) override;
+    void stencilFillPathInstanced(const std::vector<gl::Path *> &paths,
+                                  GLenum fillMode,
+                                  GLuint mask,
+                                  GLenum transformType,
+                                  const GLfloat *transformValues) override;
+    void stencilStrokePathInstanced(const std::vector<gl::Path *> &paths,
+                                    GLint reference,
+                                    GLuint mask,
+                                    GLenum transformType,
+                                    const GLfloat *transformValues) override;
+    void stencilThenCoverFillPathInstanced(const std::vector<gl::Path *> &paths,
+                                           GLenum coverMode,
+                                           GLenum fillMode,
+                                           GLuint mask,
+                                           GLenum transformType,
+                                           const GLfloat *transformValues) override;
+    void stencilThenCoverStrokePathInstanced(const std::vector<gl::Path *> &paths,
+                                             GLenum coverMode,
+                                             GLint reference,
+                                             GLuint mask,
+                                             GLenum transformType,
+                                             const GLfloat *transformValues) override;
+
+    // Device loss
+    GLenum getResetStatus() override;
+
+    // Vendor and description strings.
+    std::string getVendorString() const override;
+    std::string getRendererDescription() const override;
+
+    // Debug markers.
+    void insertEventMarker(GLsizei length, const char *marker) override;
+    void pushGroupMarker(GLsizei length, const char *marker) override;
+    void popGroupMarker() override;
+
+    // State sync with dirty bits.
+    void syncState(const gl::State &state, const gl::State::DirtyBits &dirtyBits) override;
+
+    // Disjoint timer queries
+    GLint getGPUDisjoint() override;
+    GLint64 getTimestamp() override;
+
+    // Context switching
+    void onMakeCurrent(const gl::ContextState &data) override;
+
+    // Native capabilities, unmodified by gl::Context.
+    const gl::Caps &getNativeCaps() const override;
+    const gl::TextureCapsMap &getNativeTextureCaps() const override;
+    const gl::Extensions &getNativeExtensions() const override;
+    const gl::Limitations &getNativeLimitations() const override;
 
     // Shader creation
     CompilerImpl *createCompiler() override;
     ShaderImpl *createShader(const gl::ShaderState &data) override;
     ProgramImpl *createProgram(const gl::ProgramState &data) override;
 
     // Framebuffer creation
     FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override;
@@ -83,13 +155,19 @@ class ContextNULL : public ContextImpl
     // Transform Feedback creation
     TransformFeedbackImpl *createTransformFeedback(
         const gl::TransformFeedbackState &state) override;
 
     // Sampler object creation
     SamplerImpl *createSampler() override;
 
     std::vector<PathImpl *> createPaths(GLsizei range) override;
+
+  private:
+    gl::Caps mCaps;
+    gl::TextureCapsMap mTextureCaps;
+    gl::Extensions mExtensions;
+    gl::Limitations mLimitations;
 };
 
 }  // namespace rx
 
 #endif  // LIBANGLE_RENDERER_NULL_CONTEXTNULL_H_
--- a/gfx/angle/src/libANGLE/renderer/null/DeviceNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/DeviceNULL.cpp
@@ -25,24 +25,21 @@ DeviceNULL::~DeviceNULL()
 egl::Error DeviceNULL::getDevice(void **outValue)
 {
     UNIMPLEMENTED();
     return egl::Error(EGL_BAD_ACCESS);
 }
 
 EGLint DeviceNULL::getType()
 {
-    UNIMPLEMENTED();
-    return EGLint();
+    return 0;
 }
 
 void DeviceNULL::generateExtensions(egl::DeviceExtensions *outExtensions) const
 {
-    UNIMPLEMENTED();
 }
 
 bool DeviceNULL::deviceExternallySourced()
 {
-    UNIMPLEMENTED();
-    return bool();
+    return false;
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/DisplayNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/DisplayNULL.cpp
@@ -6,163 +6,207 @@
 // DisplayNULL.cpp:
 //    Implements the class methods for DisplayNULL.
 //
 
 #include "libANGLE/renderer/null/DisplayNULL.h"
 
 #include "common/debug.h"
 
+#include "libANGLE/renderer/null/ContextNULL.h"
+#include "libANGLE/renderer/null/DeviceNULL.h"
+#include "libANGLE/renderer/null/ImageNULL.h"
+#include "libANGLE/renderer/null/SurfaceNULL.h"
+
 namespace rx
 {
 
-DisplayNULL::DisplayNULL() : DisplayImpl()
+DisplayNULL::DisplayNULL() : DisplayImpl(), mDevice(nullptr)
 {
 }
 
 DisplayNULL::~DisplayNULL()
 {
 }
 
 egl::Error DisplayNULL::initialize(egl::Display *display)
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    mDevice = new DeviceNULL();
+    return egl::NoError();
 }
 
 void DisplayNULL::terminate()
 {
-    UNIMPLEMENTED();
+    SafeDelete(mDevice);
 }
 
 egl::Error DisplayNULL::makeCurrent(egl::Surface *drawSurface,
                                     egl::Surface *readSurface,
                                     gl::Context *context)
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 egl::ConfigSet DisplayNULL::generateConfigs()
 {
-    UNIMPLEMENTED();
-    return egl::ConfigSet();
+    egl::Config config;
+    config.renderTargetFormat    = GL_RGBA8;
+    config.depthStencilFormat    = GL_DEPTH24_STENCIL8;
+    config.bufferSize            = 32;
+    config.redSize               = 8;
+    config.greenSize             = 8;
+    config.blueSize              = 8;
+    config.alphaSize             = 8;
+    config.alphaMaskSize         = 0;
+    config.bindToTextureRGB      = EGL_TRUE;
+    config.bindToTextureRGBA     = EGL_TRUE;
+    config.colorBufferType       = EGL_RGB_BUFFER;
+    config.configCaveat          = EGL_NONE;
+    config.conformant            = EGL_OPENGL_ES2_BIT | EGL_OPENGL_ES3_BIT;
+    config.depthSize             = 24;
+    config.level                 = 0;
+    config.matchNativePixmap     = EGL_NONE;
+    config.maxPBufferWidth       = 0;
+    config.maxPBufferHeight      = 0;
+    config.maxPBufferPixels      = 0;
+    config.maxSwapInterval       = 1;
+    config.minSwapInterval       = 1;
+    config.nativeRenderable      = EGL_TRUE;
+    config.nativeVisualID        = 0;
+    config.nativeVisualType      = EGL_NONE;
+    config.renderableType        = EGL_OPENGL_ES2_BIT | EGL_OPENGL_ES3_BIT;
+    config.sampleBuffers         = 0;
+    config.samples               = 0;
+    config.stencilSize           = 8;
+    config.surfaceType           = EGL_WINDOW_BIT | EGL_PBUFFER_BIT;
+    config.optimalOrientation    = 0;
+    config.transparentType       = EGL_NONE;
+    config.transparentRedValue   = 0;
+    config.transparentGreenValue = 0;
+    config.transparentBlueValue  = 0;
+
+    egl::ConfigSet configSet;
+    configSet.add(config);
+    return configSet;
 }
 
 bool DisplayNULL::testDeviceLost()
 {
-    UNIMPLEMENTED();
-    return bool();
+    return false;
 }
 
 egl::Error DisplayNULL::restoreLostDevice()
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 bool DisplayNULL::isValidNativeWindow(EGLNativeWindowType window) const
 {
-    UNIMPLEMENTED();
-    return bool();
+    return true;
 }
 
 std::string DisplayNULL::getVendorString() const
 {
-    UNIMPLEMENTED();
-    return std::string();
+    return "NULL";
 }
 
 egl::Error DisplayNULL::getDevice(DeviceImpl **device)
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    *device = mDevice;
+    return egl::NoError();
 }
 
 egl::Error DisplayNULL::waitClient() const
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 egl::Error DisplayNULL::waitNative(EGLint engine,
                                    egl::Surface *drawSurface,
                                    egl::Surface *readSurface) const
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 gl::Version DisplayNULL::getMaxSupportedESVersion() const
 {
-    UNIMPLEMENTED();
-    return gl::Version();
+    return gl::Version(3, 2);
 }
 
 SurfaceImpl *DisplayNULL::createWindowSurface(const egl::SurfaceState &state,
                                               const egl::Config *configuration,
                                               EGLNativeWindowType window,
                                               const egl::AttributeMap &attribs)
 {
-    UNIMPLEMENTED();
-    return static_cast<SurfaceImpl *>(0);
+    return new SurfaceNULL(state);
 }
 
 SurfaceImpl *DisplayNULL::createPbufferSurface(const egl::SurfaceState &state,
                                                const egl::Config *configuration,
                                                const egl::AttributeMap &attribs)
 {
-    UNIMPLEMENTED();
-    return static_cast<SurfaceImpl *>(0);
+    return new SurfaceNULL(state);
 }
 
 SurfaceImpl *DisplayNULL::createPbufferFromClientBuffer(const egl::SurfaceState &state,
                                                         const egl::Config *configuration,
                                                         EGLenum buftype,
                                                         EGLClientBuffer buffer,
                                                         const egl::AttributeMap &attribs)
 {
-    UNIMPLEMENTED();
-    return static_cast<SurfaceImpl *>(0);
+    return new SurfaceNULL(state);
 }
 
 SurfaceImpl *DisplayNULL::createPixmapSurface(const egl::SurfaceState &state,
                                               const egl::Config *configuration,
                                               NativePixmapType nativePixmap,
                                               const egl::AttributeMap &attribs)
 {
-    UNIMPLEMENTED();
-    return static_cast<SurfaceImpl *>(0);
+    return new SurfaceNULL(state);
 }
 
 ImageImpl *DisplayNULL::createImage(EGLenum target,
                                     egl::ImageSibling *buffer,
                                     const egl::AttributeMap &attribs)
 {
-    UNIMPLEMENTED();
-    return static_cast<ImageImpl *>(0);
+    return new ImageNULL();
 }
 
 ContextImpl *DisplayNULL::createContext(const gl::ContextState &state)
 {
-    UNIMPLEMENTED();
-    return static_cast<ContextImpl *>(0);
+    return new ContextNULL(state);
 }
 
 StreamProducerImpl *DisplayNULL::createStreamProducerD3DTextureNV12(
     egl::Stream::ConsumerType consumerType,
     const egl::AttributeMap &attribs)
 {
     UNIMPLEMENTED();
-    return static_cast<StreamProducerImpl *>(0);
+    return nullptr;
 }
 
 void DisplayNULL::generateExtensions(egl::DisplayExtensions *outExtensions) const
 {
-    UNIMPLEMENTED();
+    outExtensions->createContextRobustness            = true;
+    outExtensions->postSubBuffer                      = true;
+    outExtensions->createContext                      = true;
+    outExtensions->deviceQuery                        = true;
+    outExtensions->image                              = true;
+    outExtensions->imageBase                          = true;
+    outExtensions->glTexture2DImage                   = true;
+    outExtensions->glTextureCubemapImage              = true;
+    outExtensions->glTexture3DImage                   = true;
+    outExtensions->glRenderbufferImage                = true;
+    outExtensions->getAllProcAddresses                = true;
+    outExtensions->flexibleSurfaceCompatibility       = true;
+    outExtensions->directComposition                  = true;
+    outExtensions->createContextNoError               = true;
+    outExtensions->createContextWebGLCompatibility    = true;
+    outExtensions->createContextBindGeneratesResource = true;
+    outExtensions->swapBuffersWithDamage              = true;
 }
 
 void DisplayNULL::generateCaps(egl::Caps *outCaps) const
 {
-    UNIMPLEMENTED();
+    outCaps->textureNPOT = true;
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/DisplayNULL.h
+++ b/gfx/angle/src/libANGLE/renderer/null/DisplayNULL.h
@@ -70,13 +70,15 @@ class DisplayNULL : public DisplayImpl
 
     StreamProducerImpl *createStreamProducerD3DTextureNV12(
         egl::Stream::ConsumerType consumerType,
         const egl::AttributeMap &attribs) override;
 
   private:
     void generateExtensions(egl::DisplayExtensions *outExtensions) const override;
     void generateCaps(egl::Caps *outCaps) const override;
+
+    DeviceImpl *mDevice;
 };
 
 }  // namespace rx
 
 #endif  // LIBANGLE_RENDERER_NULL_DISPLAYNULL_H_
--- a/gfx/angle/src/libANGLE/renderer/null/FenceSyncNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/FenceSyncNULL.cpp
@@ -19,31 +19,29 @@ FenceSyncNULL::FenceSyncNULL() : FenceSy
 }
 
 FenceSyncNULL::~FenceSyncNULL()
 {
 }
 
 gl::Error FenceSyncNULL::set(GLenum condition, GLbitfield flags)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FenceSyncNULL::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *outResult = GL_ALREADY_SIGNALED;
+    return gl::NoError();
 }
 
 gl::Error FenceSyncNULL::serverWait(GLbitfield flags, GLuint64 timeout)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FenceSyncNULL::getStatus(GLint *outResult)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *outResult = GL_SIGNALED;
+    return gl::NoError();
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/FramebufferNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/FramebufferNULL.cpp
@@ -4,128 +4,132 @@
 // found in the LICENSE file.
 //
 // FramebufferNULL.cpp:
 //    Implements the class methods for FramebufferNULL.
 //
 
 #include "libANGLE/renderer/null/FramebufferNULL.h"
 
+#include "libANGLE/formatutils.h"
+
 #include "common/debug.h"
 
 namespace rx
 {
 
 FramebufferNULL::FramebufferNULL(const gl::FramebufferState &state) : FramebufferImpl(state)
 {
 }
 
 FramebufferNULL::~FramebufferNULL()
 {
 }
 
 gl::Error FramebufferNULL::discard(size_t count, const GLenum *attachments)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::invalidate(size_t count, const GLenum *attachments)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::invalidateSub(size_t count,
                                          const GLenum *attachments,
                                          const gl::Rectangle &area)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::clear(ContextImpl *context, GLbitfield mask)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::clearBufferfv(ContextImpl *context,
                                          GLenum buffer,
                                          GLint drawbuffer,
                                          const GLfloat *values)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::clearBufferuiv(ContextImpl *context,
                                           GLenum buffer,
                                           GLint drawbuffer,
                                           const GLuint *values)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::clearBufferiv(ContextImpl *context,
                                          GLenum buffer,
                                          GLint drawbuffer,
                                          const GLint *values)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::clearBufferfi(ContextImpl *context,
                                          GLenum buffer,
                                          GLint drawbuffer,
                                          GLfloat depth,
                                          GLint stencil)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 GLenum FramebufferNULL::getImplementationColorReadFormat() const
 {
-    UNIMPLEMENTED();
-    return GLenum();
+    const gl::FramebufferAttachment *readAttachment = mState.getReadAttachment();
+    if (readAttachment == nullptr)
+    {
+        return GL_NONE;
+    }
+
+    const gl::Format &format = readAttachment->getFormat();
+    ASSERT(format.info != nullptr);
+    return format.info->getReadPixelsFormat();
 }
 
 GLenum FramebufferNULL::getImplementationColorReadType() const
 {
-    UNIMPLEMENTED();
-    return GLenum();
+    const gl::FramebufferAttachment *readAttachment = mState.getReadAttachment();
+    if (readAttachment == nullptr)
+    {
+        return GL_NONE;
+    }
+
+    const gl::Format &format = readAttachment->getFormat();
+    ASSERT(format.info != nullptr);
+    return format.info->getReadPixelsType();
 }
 
 gl::Error FramebufferNULL::readPixels(ContextImpl *context,
                                       const gl::Rectangle &area,
                                       GLenum format,
                                       GLenum type,
                                       GLvoid *pixels) const
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error FramebufferNULL::blit(ContextImpl *context,
                                 const gl::Rectangle &sourceArea,
                                 const gl::Rectangle &destArea,
                                 GLbitfield mask,
                                 GLenum filter)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 bool FramebufferNULL::checkStatus() const
 {
-    UNIMPLEMENTED();
-    return bool();
+    return true;
 }
 
 void FramebufferNULL::syncState(const gl::Framebuffer::DirtyBits &dirtyBits)
 {
-    UNIMPLEMENTED();
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/ProgramNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/ProgramNULL.cpp
@@ -19,194 +19,167 @@ ProgramNULL::ProgramNULL(const gl::Progr
 }
 
 ProgramNULL::~ProgramNULL()
 {
 }
 
 LinkResult ProgramNULL::load(gl::InfoLog &infoLog, gl::BinaryInputStream *stream)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return true;
 }
 
 gl::Error ProgramNULL::save(gl::BinaryOutputStream *stream)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 void ProgramNULL::setBinaryRetrievableHint(bool retrievable)
 {
-    UNIMPLEMENTED();
 }
 
 LinkResult ProgramNULL::link(const gl::ContextState &data, gl::InfoLog &infoLog)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return true;
 }
 
 GLboolean ProgramNULL::validate(const gl::Caps &caps, gl::InfoLog *infoLog)
 {
-    UNIMPLEMENTED();
-    return GLboolean();
+    return GL_TRUE;
 }
 
 void ProgramNULL::setUniform1fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform2fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform3fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform4fv(GLint location, GLsizei count, const GLfloat *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform1iv(GLint location, GLsizei count, const GLint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform2iv(GLint location, GLsizei count, const GLint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform3iv(GLint location, GLsizei count, const GLint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform4iv(GLint location, GLsizei count, const GLint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform1uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform2uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform3uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniform4uiv(GLint location, GLsizei count, const GLuint *v)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix2fv(GLint location,
                                       GLsizei count,
                                       GLboolean transpose,
                                       const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix3fv(GLint location,
                                       GLsizei count,
                                       GLboolean transpose,
                                       const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix4fv(GLint location,
                                       GLsizei count,
                                       GLboolean transpose,
                                       const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix2x3fv(GLint location,
                                         GLsizei count,
                                         GLboolean transpose,
                                         const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix3x2fv(GLint location,
                                         GLsizei count,
                                         GLboolean transpose,
                                         const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix2x4fv(GLint location,
                                         GLsizei count,
                                         GLboolean transpose,
                                         const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix4x2fv(GLint location,
                                         GLsizei count,
                                         GLboolean transpose,
                                         const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix3x4fv(GLint location,
                                         GLsizei count,
                                         GLboolean transpose,
                                         const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformMatrix4x3fv(GLint location,
                                         GLsizei count,
                                         GLboolean transpose,
                                         const GLfloat *value)
 {
-    UNIMPLEMENTED();
 }
 
 void ProgramNULL::setUniformBlockBinding(GLuint uniformBlockIndex, GLuint uniformBlockBinding)
 {
-    UNIMPLEMENTED();
 }
 
 bool ProgramNULL::getUniformBlockSize(const std::string &blockName, size_t *sizeOut) const
 {
-    UNIMPLEMENTED();
-    return bool();
+    // TODO(geofflang): Compute reasonable sizes?
+    *sizeOut = 0;
+    return true;
 }
 
 bool ProgramNULL::getUniformBlockMemberInfo(const std::string &memberUniformName,
                                             sh::BlockMemberInfo *memberInfoOut) const
 {
-    UNIMPLEMENTED();
-    return bool();
+    // TODO(geofflang): Compute reasonable values?
+    return true;
 }
 
 void ProgramNULL::setPathFragmentInputGen(const std::string &inputName,
                                           GLenum genMode,
                                           GLint components,
                                           const GLfloat *coeffs)
 {
-    UNIMPLEMENTED();
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/QueryNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/QueryNULL.cpp
@@ -19,55 +19,52 @@ QueryNULL::QueryNULL(GLenum type) : Quer
 }
 
 QueryNULL::~QueryNULL()
 {
 }
 
 gl::Error QueryNULL::begin()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error QueryNULL::end()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error QueryNULL::queryCounter()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error QueryNULL::getResult(GLint *params)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *params = 0;
+    return gl::NoError();
 }
 
 gl::Error QueryNULL::getResult(GLuint *params)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *params = 0;
+    return gl::NoError();
 }
 
 gl::Error QueryNULL::getResult(GLint64 *params)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *params = 0;
+    return gl::NoError();
 }
 
 gl::Error QueryNULL::getResult(GLuint64 *params)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *params = 0;
+    return gl::NoError();
 }
 
 gl::Error QueryNULL::isResultAvailable(bool *available)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    *available = true;
+    return gl::NoError();
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/RenderbufferNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/RenderbufferNULL.cpp
@@ -19,28 +19,25 @@ RenderbufferNULL::RenderbufferNULL() : R
 }
 
 RenderbufferNULL::~RenderbufferNULL()
 {
 }
 
 gl::Error RenderbufferNULL::setStorage(GLenum internalformat, size_t width, size_t height)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error RenderbufferNULL::setStorageMultisample(size_t samples,
                                                   GLenum internalformat,
                                                   size_t width,
                                                   size_t height)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error RenderbufferNULL::setStorageEGLImageTarget(egl::Image *image)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/ShaderNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/ShaderNULL.cpp
@@ -20,25 +20,23 @@ ShaderNULL::ShaderNULL(const gl::ShaderS
 
 ShaderNULL::~ShaderNULL()
 {
 }
 
 ShCompileOptions ShaderNULL::prepareSourceAndReturnOptions(std::stringstream *sourceStream,
                                                            std::string *sourcePath)
 {
-    UNIMPLEMENTED();
-    return ShCompileOptions();
+    *sourceStream << mData.getSource();
+    return 0;
 }
 
 bool ShaderNULL::postTranslateCompile(gl::Compiler *compiler, std::string *infoLog)
 {
-    UNIMPLEMENTED();
-    return bool();
+    return true;
 }
 
 std::string ShaderNULL::getDebugInfo() const
 {
-    UNIMPLEMENTED();
-    return std::string();
+    return "";
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/SurfaceNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/SurfaceNULL.cpp
@@ -6,98 +6,84 @@
 // SurfaceNULL.cpp:
 //    Implements the class methods for SurfaceNULL.
 //
 
 #include "libANGLE/renderer/null/SurfaceNULL.h"
 
 #include "common/debug.h"
 
+#include "libANGLE/renderer/null/FramebufferNULL.h"
+
 namespace rx
 {
 
 SurfaceNULL::SurfaceNULL(const egl::SurfaceState &surfaceState) : SurfaceImpl(surfaceState)
 {
 }
 
 SurfaceNULL::~SurfaceNULL()
 {
 }
 
 egl::Error SurfaceNULL::initialize()
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 FramebufferImpl *SurfaceNULL::createDefaultFramebuffer(const gl::FramebufferState &state)
 {
-    UNIMPLEMENTED();
-    return static_cast<FramebufferImpl *>(0);
+    return new FramebufferNULL(state);
 }
 
 egl::Error SurfaceNULL::swap()
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 egl::Error SurfaceNULL::postSubBuffer(EGLint x, EGLint y, EGLint width, EGLint height)
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 egl::Error SurfaceNULL::querySurfacePointerANGLE(EGLint attribute, void **value)
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    UNREACHABLE();
+    return egl::NoError();
 }
 
 egl::Error SurfaceNULL::bindTexImage(gl::Texture *texture, EGLint buffer)
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 egl::Error SurfaceNULL::releaseTexImage(EGLint buffer)
 {
-    UNIMPLEMENTED();
-    return egl::Error(EGL_BAD_ACCESS);
+    return egl::NoError();
 }
 
 void SurfaceNULL::setSwapInterval(EGLint interval)
 {
-    UNIMPLEMENTED();
 }
 
 EGLint SurfaceNULL::getWidth() const
 {
-    UNIMPLEMENTED();
-    return EGLint();
+    // TODO(geofflang): Read from an actual window?
+    return 100;
 }
 
 EGLint SurfaceNULL::getHeight() const
 {
-    UNIMPLEMENTED();
-    return EGLint();
+    // TODO(geofflang): Read from an actual window?
+    return 100;
 }
 
 EGLint SurfaceNULL::isPostSubBufferSupported() const
 {
-    UNIMPLEMENTED();
-    return EGLint();
+    return EGL_TRUE;
 }
 
 EGLint SurfaceNULL::getSwapBehavior() const
 {
-    UNIMPLEMENTED();
-    return EGLint();
-}
-
-gl::Error SurfaceNULL::getAttachmentRenderTarget(const gl::FramebufferAttachment::Target &target,
-                                                 FramebufferAttachmentRenderTarget **rtOut)
-{
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return EGL_BUFFER_PRESERVED;
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/SurfaceNULL.h
+++ b/gfx/angle/src/libANGLE/renderer/null/SurfaceNULL.h
@@ -31,16 +31,13 @@ class SurfaceNULL : public SurfaceImpl
     void setSwapInterval(EGLint interval) override;
 
     // width and height can change with client window resizing
     EGLint getWidth() const override;
     EGLint getHeight() const override;
 
     EGLint isPostSubBufferSupported() const override;
     EGLint getSwapBehavior() const override;
-
-    gl::Error getAttachmentRenderTarget(const gl::FramebufferAttachment::Target &target,
-                                        FramebufferAttachmentRenderTarget **rtOut) override;
 };
 
 }  // namespace rx
 
 #endif  // LIBANGLE_RENDERER_NULL_SURFACENULL_H_
--- a/gfx/angle/src/libANGLE/renderer/null/TextureNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/TextureNULL.cpp
@@ -26,118 +26,106 @@ gl::Error TextureNULL::setImage(GLenum t
                                 size_t level,
                                 GLenum internalFormat,
                                 const gl::Extents &size,
                                 GLenum format,
                                 GLenum type,
                                 const gl::PixelUnpackState &unpack,
                                 const uint8_t *pixels)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    // TODO(geofflang): Read all incoming pixel data (maybe hash it?) to make sure we don't read out
+    // of bounds due to validation bugs.
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::setSubImage(GLenum target,
                                    size_t level,
                                    const gl::Box &area,
                                    GLenum format,
                                    GLenum type,
                                    const gl::PixelUnpackState &unpack,
                                    const uint8_t *pixels)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::setCompressedImage(GLenum target,
                                           size_t level,
                                           GLenum internalFormat,
                                           const gl::Extents &size,
                                           const gl::PixelUnpackState &unpack,
                                           size_t imageSize,
                                           const uint8_t *pixels)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::setCompressedSubImage(GLenum target,
                                              size_t level,
                                              const gl::Box &area,
                                              GLenum format,
                                              const gl::PixelUnpackState &unpack,
                                              size_t imageSize,
                                              const uint8_t *pixels)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::copyImage(GLenum target,
                                  size_t level,
                                  const gl::Rectangle &sourceArea,
                                  GLenum internalFormat,
                                  const gl::Framebuffer *source)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::copySubImage(GLenum target,
                                     size_t level,
                                     const gl::Offset &destOffset,
                                     const gl::Rectangle &sourceArea,
                                     const gl::Framebuffer *source)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::setStorage(GLenum target,
                                   size_t levels,
                                   GLenum internalFormat,
                                   const gl::Extents &size)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::setEGLImageTarget(GLenum target, egl::Image *image)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::setImageExternal(GLenum target,
                                         egl::Stream *stream,
                                         const egl::Stream::GLTextureDescription &desc)
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 gl::Error TextureNULL::generateMipmap()
 {
-    UNIMPLEMENTED();
-    return gl::Error(GL_INVALID_OPERATION);
+    return gl::NoError();
 }
 
 void TextureNULL::setBaseLevel(GLuint baseLevel)
 {
-    UNIMPLEMENTED();
 }
 
 void TextureNULL::bindTexImage(egl::Surface *surface)
 {
-    UNIMPLEMENTED();
 }
 
 void TextureNULL::releaseTexImage()
 {
-    UNIMPLEMENTED();
 }
 
 void TextureNULL::syncState(const gl::Texture::DirtyBits &dirtyBits)
 {
-    UNIMPLEMENTED();
 }
 
 }  // namespace rx
--- a/gfx/angle/src/libANGLE/renderer/null/TransformFeedbackNULL.cpp
+++ b/gfx/angle/src/libANGLE/renderer/null/TransformFeedbackNULL.cpp
@@ -20,38 +20,32 @@ TransformFeedbackNULL::TransformFeedback
 }
 
 TransformFeedbackNULL::~TransformFeedbackNULL()
 {
 }
 
 void TransformFeedbackNULL::begin(GLenum primitiveMode)
 {
-    UNIMPLEMENTED();
 }
 
 void TransformFeedbackNULL::end()
 {
-    UNIMPLEMENTED();
 }
 
 void TransformFeedbackNULL::pause()
 {
-    UNIMPLEMENTED();
 }
 
 void TransformFeedbackNULL::resume()
 {
-    UNIMPLEMENTED();
 }
 
 void TransformFeedbackNULL::bindGenericBuffer(const BindingPointer<gl::Buffer> &binding)
 {
-    UNIMPLEMENTED();
 }
 
 void TransformFeedbackNULL::bindIndexedBuffer(size_t index,
                                               const OffsetBindingPointer<gl::Buffer> &binding)
 {
-    UNIMPLEMENTED();
 }
 
 }  // namespace rx
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/validationES.cpp
+++ b/gfx/angle/src/libANGLE/validationES.cpp
@@ -34,29 +34,29 @@ const char *g_ExceedsMaxElementErrorMess
 
 namespace
 {
 bool ValidateDrawAttribs(ValidationContext *context, GLint primcount, GLint maxVertex)
 {
     const gl::State &state     = context->getGLState();
     const gl::Program *program = state.getProgram();
 
-    const VertexArray *vao     = state.getVertexArray();
-    const auto &vertexAttribs  = vao->getVertexAttributes();
-    size_t maxEnabledAttrib = vao->getMaxEnabledAttribute();
+    const VertexArray *vao    = state.getVertexArray();
+    const auto &vertexAttribs = vao->getVertexAttributes();
+    size_t maxEnabledAttrib   = vao->getMaxEnabledAttribute();
     for (size_t attributeIndex = 0; attributeIndex < maxEnabledAttrib; ++attributeIndex)
     {
         const VertexAttribute &attrib = vertexAttribs[attributeIndex];
         if (program->isAttribLocationActive(attributeIndex) && attrib.enabled)
         {
             gl::Buffer *buffer = attrib.buffer.get();
 
             if (buffer)
             {
-                GLint64 attribStride     = static_cast<GLint64>(ComputeVertexAttributeStride(attrib));
+                GLint64 attribStride = static_cast<GLint64>(ComputeVertexAttributeStride(attrib));
                 GLint64 maxVertexElement = 0;
 
                 if (attrib.divisor > 0)
                 {
                     maxVertexElement =
                         static_cast<GLint64>(primcount) / static_cast<GLint64>(attrib.divisor);
                 }
                 else
@@ -160,16 +160,19 @@ bool ValidCap(const Context *context, GL
             return context->getExtensions().debug;
 
         case GL_BIND_GENERATES_RESOURCE_CHROMIUM:
             return queryOnly && context->getExtensions().bindGeneratesResource;
 
         case GL_FRAMEBUFFER_SRGB_EXT:
             return context->getExtensions().sRGBWriteControl;
 
+        case GL_SAMPLE_MASK:
+            return context->getClientVersion() >= Version(3, 1);
+
         default:
             return false;
     }
 }
 
 bool ValidateReadPixelsBase(ValidationContext *context,
                             GLint x,
                             GLint y,
@@ -247,17 +250,17 @@ bool ValidateReadPixelsBase(ValidationCo
 
     // ..  the data would be packed to the buffer object such that the memory writes required
     // would exceed the data store size.
     GLenum sizedInternalFormat       = GetSizedInternalFormat(format, type);
     const InternalFormat &formatInfo = GetInternalFormatInfo(sizedInternalFormat);
     const gl::Extents size(width, height, 1);
     const auto &pack = context->getGLState().getPackState();
 
-    auto endByteOrErr = formatInfo.computePackUnpackEndByte(size, pack, false);
+    auto endByteOrErr = formatInfo.computePackUnpackEndByte(type, size, pack, false);
     if (endByteOrErr.isError())
     {
         context->handleError(endByteOrErr.getError());
         return false;
     }
 
     size_t endByte = endByteOrErr.getResult();
     if (bufSize >= 0)
@@ -807,16 +810,34 @@ bool ValidateTexParameterBase(Context *c
         case GL_TEXTURE_MAX_LEVEL:
             if (params[0] < 0)
             {
                 context->handleError(Error(GL_INVALID_VALUE, "Max level must be at least 0."));
                 return false;
             }
             break;
 
+        case GL_DEPTH_STENCIL_TEXTURE_MODE:
+            if (context->getClientVersion() < Version(3, 1))
+            {
+                context->handleError(Error(GL_INVALID_ENUM, "pname requires OpenGL ES 3.1."));
+                return false;
+            }
+            switch (ConvertToGLenum(params[0]))
+            {
+                case GL_DEPTH_COMPONENT:
+                case GL_STENCIL_INDEX:
+                    break;
+
+                default:
+                    context->handleError(Error(GL_INVALID_ENUM, "Unknown param value."));
+                    return false;
+            }
+            break;
+
         case GL_TEXTURE_SRGB_DECODE_EXT:
             if (!ValidateTextureSRGBDecodeValue(context, params))
             {
                 return false;
             }
             break;
 
         default:
@@ -1282,26 +1303,29 @@ bool ValidateGetInternalFormativBase(Con
 }
 
 }  // anonymous namespace
 
 bool ValidTextureTarget(const ValidationContext *context, GLenum target)
 {
     switch (target)
     {
-      case GL_TEXTURE_2D:
-      case GL_TEXTURE_CUBE_MAP:
-        return true;
-
-      case GL_TEXTURE_3D:
-      case GL_TEXTURE_2D_ARRAY:
-          return (context->getClientMajorVersion() >= 3);
-
-      default:
-        return false;
+        case GL_TEXTURE_2D:
+        case GL_TEXTURE_CUBE_MAP:
+            return true;
+
+        case GL_TEXTURE_3D:
+        case GL_TEXTURE_2D_ARRAY:
+            return (context->getClientMajorVersion() >= 3);
+
+        case GL_TEXTURE_2D_MULTISAMPLE:
+            return (context->getClientVersion() >= Version(3, 1));
+
+        default:
+            return false;
     }
 }
 
 bool ValidTexture2DTarget(const ValidationContext *context, GLenum target)
 {
     switch (target)
     {
         case GL_TEXTURE_2D:
@@ -1338,104 +1362,116 @@ bool ValidTextureExternalTarget(const Va
 // This function differs from ValidTextureTarget in that the target must be
 // usable as the destination of a 2D operation-- so a cube face is valid, but
 // GL_TEXTURE_CUBE_MAP is not.
 // Note: duplicate of IsInternalTextureTarget
 bool ValidTexture2DDestinationTarget(const ValidationContext *context, GLenum target)
 {
     switch (target)
     {
-      case GL_TEXTURE_2D:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
-        return true;
-      default:
-          return false;
+        case GL_TEXTURE_2D:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+            return true;
+        default:
+            return false;
     }
 }
 
 bool ValidTexture3DDestinationTarget(const ValidationContext *context, GLenum target)
 {
     switch (target)
     {
-      case GL_TEXTURE_3D:
-      case GL_TEXTURE_2D_ARRAY:
-          return true;
-      default:
-        return false;
+        case GL_TEXTURE_3D:
+        case GL_TEXTURE_2D_ARRAY:
+            return true;
+        default:
+            return false;
     }
 }
 
 bool ValidFramebufferTarget(GLenum target)
 {
-    static_assert(GL_DRAW_FRAMEBUFFER_ANGLE == GL_DRAW_FRAMEBUFFER && GL_READ_FRAMEBUFFER_ANGLE == GL_READ_FRAMEBUFFER,
+    static_assert(GL_DRAW_FRAMEBUFFER_ANGLE == GL_DRAW_FRAMEBUFFER &&
+                      GL_READ_FRAMEBUFFER_ANGLE == GL_READ_FRAMEBUFFER,
                   "ANGLE framebuffer enums must equal the ES3 framebuffer enums.");
 
     switch (target)
     {
-      case GL_FRAMEBUFFER:      return true;
-      case GL_READ_FRAMEBUFFER: return true;
-      case GL_DRAW_FRAMEBUFFER: return true;
-      default:                  return false;
+        case GL_FRAMEBUFFER:
+            return true;
+        case GL_READ_FRAMEBUFFER:
+            return true;
+        case GL_DRAW_FRAMEBUFFER:
+            return true;
+        default:
+            return false;
     }
 }
 
 bool ValidBufferTarget(const ValidationContext *context, GLenum target)
 {
     switch (target)
     {
-      case GL_ARRAY_BUFFER:
-      case GL_ELEMENT_ARRAY_BUFFER:
-        return true;
-
-      case GL_PIXEL_PACK_BUFFER:
-      case GL_PIXEL_UNPACK_BUFFER:
-          return (context->getExtensions().pixelBufferObject ||
-                  context->getClientMajorVersion() >= 3);
-
-      case GL_COPY_READ_BUFFER:
-      case GL_COPY_WRITE_BUFFER:
-      case GL_TRANSFORM_FEEDBACK_BUFFER:
-      case GL_UNIFORM_BUFFER:
-          return (context->getClientMajorVersion() >= 3);
-
-      default:
-        return false;
+        case GL_ARRAY_BUFFER:
+        case GL_ELEMENT_ARRAY_BUFFER:
+            return true;
+
+        case GL_PIXEL_PACK_BUFFER:
+        case GL_PIXEL_UNPACK_BUFFER:
+            return (context->getExtensions().pixelBufferObject ||
+                    context->getClientMajorVersion() >= 3);
+
+        case GL_COPY_READ_BUFFER:
+        case GL_COPY_WRITE_BUFFER:
+        case GL_TRANSFORM_FEEDBACK_BUFFER:
+        case GL_UNIFORM_BUFFER:
+            return (context->getClientMajorVersion() >= 3);
+
+        case GL_ATOMIC_COUNTER_BUFFER:
+        case GL_SHADER_STORAGE_BUFFER:
+        case GL_DRAW_INDIRECT_BUFFER:
+        case GL_DISPATCH_INDIRECT_BUFFER:
+            return context->getClientVersion() >= Version(3, 1);
+
+        default:
+            return false;
     }
 }
 
 bool ValidMipLevel(const ValidationContext *context, GLenum target, GLint level)
 {
     const auto &caps    = context->getCaps();
     size_t maxDimension = 0;
     switch (target)
     {
         case GL_TEXTURE_2D:
             maxDimension = caps.max2DTextureSize;
             break;
-      case GL_TEXTURE_CUBE_MAP:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
-          maxDimension = caps.maxCubeMapTextureSize;
-          break;
-      case GL_TEXTURE_3D:
-          maxDimension = caps.max3DTextureSize;
-          break;
-      case GL_TEXTURE_2D_ARRAY:
-          maxDimension = caps.max2DTextureSize;
-          break;
-      default: UNREACHABLE();
+        case GL_TEXTURE_CUBE_MAP:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+            maxDimension = caps.maxCubeMapTextureSize;
+            break;
+        case GL_TEXTURE_3D:
+            maxDimension = caps.max3DTextureSize;
+            break;
+        case GL_TEXTURE_2D_ARRAY:
+            maxDimension = caps.max2DTextureSize;
+            break;
+        default:
+            UNREACHABLE();
     }
 
     return level <= gl::log2(static_cast<int>(maxDimension));
 }
 
 bool ValidImageSizeParameters(const Context *context,
                               GLenum target,
                               GLint level,
@@ -1533,17 +1569,17 @@ bool ValidImageDataSize(ValidationContex
     // ...the data would be unpacked from the buffer object such that the memory reads required
     // would exceed the data store size.
     GLenum sizedFormat                   = GetSizedInternalFormat(internalFormat, type);
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(sizedFormat);
     const gl::Extents size(width, height, depth);
     const auto &unpack = context->getGLState().getUnpackState();
 
     bool targetIs3D   = textureTarget == GL_TEXTURE_3D || textureTarget == GL_TEXTURE_2D_ARRAY;
-    auto endByteOrErr = formatInfo.computePackUnpackEndByte(size, unpack, targetIs3D);
+    auto endByteOrErr = formatInfo.computePackUnpackEndByte(type, size, unpack, targetIs3D);
     if (endByteOrErr.isError())
     {
         context->handleError(endByteOrErr.getError());
         return false;
     }
 
     GLuint endByte = endByteOrErr.getResult();
 
@@ -1579,40 +1615,43 @@ bool ValidImageDataSize(ValidationContex
         }
     }
 
     return true;
 }
 
 bool ValidQueryType(const Context *context, GLenum queryType)
 {
-    static_assert(GL_ANY_SAMPLES_PASSED == GL_ANY_SAMPLES_PASSED_EXT, "GL extension enums not equal.");
-    static_assert(GL_ANY_SAMPLES_PASSED_CONSERVATIVE == GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT, "GL extension enums not equal.");
+    static_assert(GL_ANY_SAMPLES_PASSED == GL_ANY_SAMPLES_PASSED_EXT,
+                  "GL extension enums not equal.");
+    static_assert(GL_ANY_SAMPLES_PASSED_CONSERVATIVE == GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT,
+                  "GL extension enums not equal.");
 
     switch (queryType)
     {
-      case GL_ANY_SAMPLES_PASSED:
-      case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:
-        return true;
-      case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
-          return (context->getClientMajorVersion() >= 3);
-      case GL_TIME_ELAPSED_EXT:
-          return context->getExtensions().disjointTimerQuery;
-      case GL_COMMANDS_COMPLETED_CHROMIUM:
-          return context->getExtensions().syncQuery;
-      default:
-        return false;
+        case GL_ANY_SAMPLES_PASSED:
+        case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:
+            return true;
+        case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
+            return (context->getClientMajorVersion() >= 3);
+        case GL_TIME_ELAPSED_EXT:
+            return context->getExtensions().disjointTimerQuery;
+        case GL_COMMANDS_COMPLETED_CHROMIUM:
+            return context->getExtensions().syncQuery;
+        default:
+            return false;
     }
 }
 
 Program *GetValidProgram(ValidationContext *context, GLuint id)
 {
-    // ES3 spec (section 2.11.1) -- "Commands that accept shader or program object names will generate the
-    // error INVALID_VALUE if the provided name is not the name of either a shader or program object and
-    // INVALID_OPERATION if the provided name identifies an object that is not the expected type."
+    // ES3 spec (section 2.11.1) -- "Commands that accept shader or program object names will
+    // generate the error INVALID_VALUE if the provided name is not the name of either a shader
+    // or program object and INVALID_OPERATION if the provided name identifies an object
+    // that is not the expected type."
 
     Program *validProgram = context->getProgram(id);
 
     if (!validProgram)
     {
         if (context->getShader(id))
         {
             context->handleError(
@@ -1660,48 +1699,52 @@ bool ValidateAttachmentTarget(gl::Contex
             context->handleError(Error(GL_INVALID_VALUE));
             return false;
         }
     }
     else
     {
         switch (attachment)
         {
-          case GL_DEPTH_ATTACHMENT:
-          case GL_STENCIL_ATTACHMENT:
-              break;
-
-          case GL_DEPTH_STENCIL_ATTACHMENT:
-              if (!context->getExtensions().webglCompatibility &&
-                  context->getClientMajorVersion() < 3)
-              {
-                  context->handleError(Error(GL_INVALID_ENUM));
-                  return false;
-              }
-              break;
-
-          default:
-              context->handleError(Error(GL_INVALID_ENUM));
-              return false;
+            case GL_DEPTH_ATTACHMENT:
+            case GL_STENCIL_ATTACHMENT:
+                break;
+
+            case GL_DEPTH_STENCIL_ATTACHMENT:
+                if (!context->getExtensions().webglCompatibility &&
+                    context->getClientMajorVersion() < 3)
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+
+            default:
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
         }
     }
 
     return true;
 }
 
-bool ValidateRenderbufferStorageParametersBase(gl::Context *context, GLenum target, GLsizei samples,
-                                               GLenum internalformat, GLsizei width, GLsizei height)
+bool ValidateRenderbufferStorageParametersBase(gl::Context *context,
+                                               GLenum target,
+                                               GLsizei samples,
+                                               GLenum internalformat,
+                                               GLsizei width,
+                                               GLsizei height)
 {
     switch (target)
     {
-      case GL_RENDERBUFFER:
-        break;
-      default:
-          context->handleError(Error(GL_INVALID_ENUM));
-        return false;
+        case GL_RENDERBUFFER:
+            break;
+        default:
+            context->handleError(Error(GL_INVALID_ENUM));
+            return false;
     }
 
     if (width < 0 || height < 0 || samples < 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
@@ -1733,18 +1776,22 @@ bool ValidateRenderbufferStorageParamete
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     return true;
 }
 
-bool ValidateRenderbufferStorageParametersANGLE(gl::Context *context, GLenum target, GLsizei samples,
-                                                GLenum internalformat, GLsizei width, GLsizei height)
+bool ValidateRenderbufferStorageParametersANGLE(gl::Context *context,
+                                                GLenum target,
+                                                GLsizei samples,
+                                                GLenum internalformat,
+                                                GLsizei width,
+                                                GLsizei height)
 {
     ASSERT(samples == 0 || context->getExtensions().framebufferMultisample);
 
     // ANGLE_framebuffer_multisample states that the value of samples must be less than or equal
     // to MAX_SAMPLES_ANGLE (Context::getCaps().maxSamples) otherwise GL_INVALID_VALUE is
     // generated.
     if (static_cast<GLuint>(samples) > context->getCaps().maxSamples)
     {
@@ -1761,21 +1808,25 @@ bool ValidateRenderbufferStorageParamete
         const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
         if (static_cast<GLuint>(samples) > formatCaps.getMaxSamples())
         {
             context->handleError(Error(GL_OUT_OF_MEMORY));
             return false;
         }
     }
 
-    return ValidateRenderbufferStorageParametersBase(context, target, samples, internalformat, width, height);
+    return ValidateRenderbufferStorageParametersBase(context, target, samples, internalformat,
+                                                     width, height);
 }
 
-bool ValidateFramebufferRenderbufferParameters(gl::Context *context, GLenum target, GLenum attachment,
-                                               GLenum renderbuffertarget, GLuint renderbuffer)
+bool ValidateFramebufferRenderbufferParameters(gl::Context *context,
+                                               GLenum target,
+                                               GLenum attachment,
+                                               GLenum renderbuffertarget,
+                                               GLuint renderbuffer)
 {
     if (!ValidFramebufferTarget(target))
     {
         context->handleError(Error(GL_INVALID_ENUM));
         return false;
     }
 
     gl::Framebuffer *framebuffer = context->getGLState().getTargetFramebuffer(target);
@@ -1818,23 +1869,23 @@ bool ValidateBlitFramebufferParameters(V
                                        GLint dstY0,
                                        GLint dstX1,
                                        GLint dstY1,
                                        GLbitfield mask,
                                        GLenum filter)
 {
     switch (filter)
     {
-      case GL_NEAREST:
-        break;
-      case GL_LINEAR:
-        break;
-      default:
-          context->handleError(Error(GL_INVALID_ENUM));
-        return false;
+        case GL_NEAREST:
+            break;
+        case GL_LINEAR:
+            break;
+        default:
+            context->handleError(Error(GL_INVALID_ENUM));
+            return false;
     }
 
     if ((mask & ~(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)) != 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
@@ -1905,23 +1956,25 @@ bool ValidateBlitFramebufferParameters(V
                 const FramebufferAttachment *attachment =
                     drawFramebuffer->getDrawBuffer(drawbufferIdx);
                 if (attachment)
                 {
                     const Format &drawFormat = attachment->getFormat();
 
                     // The GL ES 3.0.2 spec (pg 193) states that:
                     // 1) If the read buffer is fixed point format, the draw buffer must be as well
-                    // 2) If the read buffer is an unsigned integer format, the draw buffer must be as well
-                    // 3) If the read buffer is a signed integer format, the draw buffer must be as well
+                    // 2) If the read buffer is an unsigned integer format, the draw buffer must be
+                    // as well
+                    // 3) If the read buffer is a signed integer format, the draw buffer must be as
+                    // well
                     // Changes with EXT_color_buffer_float:
                     // Case 1) is changed to fixed point OR floating point
                     GLenum readComponentType = readFormat.info->componentType;
                     GLenum drawComponentType = drawFormat.info->componentType;
-                    bool readFixedPoint = (readComponentType == GL_UNSIGNED_NORMALIZED ||
+                    bool readFixedPoint      = (readComponentType == GL_UNSIGNED_NORMALIZED ||
                                            readComponentType == GL_SIGNED_NORMALIZED);
                     bool drawFixedPoint = (drawComponentType == GL_UNSIGNED_NORMALIZED ||
                                            drawComponentType == GL_SIGNED_NORMALIZED);
 
                     if (extensions.colorBufferFloat)
                     {
                         bool readFixedOrFloat = (readFixedPoint || readComponentType == GL_FLOAT);
                         bool drawFixedOrFloat = (drawFixedPoint || drawComponentType == GL_FLOAT);
@@ -1970,24 +2023,26 @@ bool ValidateBlitFramebufferParameters(V
                 filter == GL_LINEAR)
             {
                 context->handleError(Error(GL_INVALID_OPERATION));
                 return false;
             }
         }
     }
 
-    GLenum masks[] = {GL_DEPTH_BUFFER_BIT, GL_STENCIL_BUFFER_BIT};
+    GLenum masks[]       = {GL_DEPTH_BUFFER_BIT, GL_STENCIL_BUFFER_BIT};
     GLenum attachments[] = {GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT};
     for (size_t i = 0; i < 2; i++)
     {
         if (mask & masks[i])
         {
-            const gl::FramebufferAttachment *readBuffer = readFramebuffer->getAttachment(attachments[i]);
-            const gl::FramebufferAttachment *drawBuffer = drawFramebuffer->getAttachment(attachments[i]);
+            const gl::FramebufferAttachment *readBuffer =
+                readFramebuffer->getAttachment(attachments[i]);
+            const gl::FramebufferAttachment *drawBuffer =
+                drawFramebuffer->getAttachment(attachments[i]);
 
             if (readBuffer && drawBuffer)
             {
                 if (!Format::SameSized(readBuffer->getFormat(), drawBuffer->getFormat()))
                 {
                     context->handleError(Error(GL_INVALID_OPERATION));
                     return false;
                 }
@@ -2531,29 +2586,30 @@ bool ValidateGetQueryObjectui64vRobustAN
     {
         return false;
     }
 
     return true;
 }
 
 static bool ValidateUniformCommonBase(gl::Context *context,
+                                      gl::Program *program,
                                       GLenum targetUniformType,
                                       GLint location,
                                       GLsizei count,
                                       const LinkedUniform **uniformOut)
 {
+    // TODO(Jiajia): Add image uniform check in future.
     if (count < 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
-    gl::Program *program = context->getGLState().getProgram();
-    if (!program)
+    if (!program || !program->isLinked())
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     if (program->isIgnoredUniformLocation(location))
     {
         // Silently ignore the uniform command
@@ -2574,44 +2630,109 @@ static bool ValidateUniformCommonBase(gl
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     *uniformOut = &uniform;
     return true;
 }
 
+bool ValidateProgramUniform(gl::Context *context,
+                            GLenum uniformType,
+                            GLuint program,
+                            GLint location,
+                            GLsizei count)
+{
+    // Check for ES31 program uniform entry points
+    if (context->getClientVersion() < Version(3, 1))
+    {
+        context->handleError(Error(GL_INVALID_OPERATION));
+        return false;
+    }
+
+    const LinkedUniform *uniform = nullptr;
+    gl::Program *programObject   = GetValidProgram(context, program);
+    if (!ValidateUniformCommonBase(context, programObject, uniformType, location, count, &uniform))
+    {
+        return false;
+    }
+
+    GLenum targetBoolType    = VariableBoolVectorType(uniformType);
+    bool samplerUniformCheck = (IsSamplerType(uniform->type) && uniformType == GL_INT);
+    if (!samplerUniformCheck && uniformType != uniform->type && targetBoolType != uniform->type)
+    {
+        context->handleError(Error(GL_INVALID_OPERATION));
+        return false;
+    }
+
+    return true;
+}
+
+bool ValidateProgramUniformMatrix(gl::Context *context,
+                                  GLenum matrixType,
+                                  GLuint program,
+                                  GLint location,
+                                  GLsizei count,
+                                  GLboolean transpose)
+{
+    // Check for ES31 program uniform entry points
+    if (context->getClientVersion() < Version(3, 1))
+    {
+        context->handleError(Error(GL_INVALID_OPERATION));
+        return false;
+    }
+
+    const LinkedUniform *uniform = nullptr;
+    gl::Program *programObject   = GetValidProgram(context, program);
+    if (!ValidateUniformCommonBase(context, programObject, matrixType, location, count, &uniform))
+    {
+        return false;
+    }
+
+    if (uniform->type != matrixType)
+    {
+        context->handleError(Error(GL_INVALID_OPERATION));
+        return false;
+    }
+
+    return true;
+}
+
 bool ValidateUniform(gl::Context *context, GLenum uniformType, GLint location, GLsizei count)
 {
     // Check for ES3 uniform entry points
     if (VariableComponentType(uniformType) == GL_UNSIGNED_INT &&
         context->getClientMajorVersion() < 3)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     const LinkedUniform *uniform = nullptr;
-    if (!ValidateUniformCommonBase(context, uniformType, location, count, &uniform))
-    {
-        return false;
-    }
-
-    GLenum targetBoolType = VariableBoolVectorType(uniformType);
+    gl::Program *program         = context->getGLState().getProgram();
+    if (!ValidateUniformCommonBase(context, program, uniformType, location, count, &uniform))
+    {
+        return false;
+    }
+
+    GLenum targetBoolType    = VariableBoolVectorType(uniformType);
     bool samplerUniformCheck = (IsSamplerType(uniform->type) && uniformType == GL_INT);
     if (!samplerUniformCheck && uniformType != uniform->type && targetBoolType != uniform->type)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     return true;
 }
 
-bool ValidateUniformMatrix(gl::Context *context, GLenum matrixType, GLint location, GLsizei count,
+bool ValidateUniformMatrix(gl::Context *context,
+                           GLenum matrixType,
+                           GLint location,
+                           GLsizei count,
                            GLboolean transpose)
 {
     // Check for ES3 uniform entry points
     int rows = VariableRowCount(matrixType);
     int cols = VariableColumnCount(matrixType);
     if (rows != cols && context->getClientMajorVersion() < 3)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
@@ -2620,17 +2741,18 @@ bool ValidateUniformMatrix(gl::Context *
 
     if (transpose != GL_FALSE && context->getClientMajorVersion() < 3)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     const LinkedUniform *uniform = nullptr;
-    if (!ValidateUniformCommonBase(context, matrixType, location, count, &uniform))
+    gl::Program *program         = context->getGLState().getProgram();
+    if (!ValidateUniformCommonBase(context, program, matrixType, location, count, &uniform))
     {
         return false;
     }
 
     if (uniform->type != matrixType)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
@@ -2660,34 +2782,34 @@ bool ValidateStateQuery(ValidationContex
         {
             context->handleError(Error(GL_INVALID_OPERATION));
             return false;
         }
     }
 
     switch (pname)
     {
-      case GL_TEXTURE_BINDING_2D:
-      case GL_TEXTURE_BINDING_CUBE_MAP:
-      case GL_TEXTURE_BINDING_3D:
-      case GL_TEXTURE_BINDING_2D_ARRAY:
-        break;
-      case GL_TEXTURE_BINDING_EXTERNAL_OES:
-          if (!context->getExtensions().eglStreamConsumerExternal &&
-              !context->getExtensions().eglImageExternal)
-          {
-              context->handleError(Error(GL_INVALID_ENUM,
-                                         "Neither NV_EGL_stream_consumer_external nor "
-                                         "GL_OES_EGL_image_external extensions enabled"));
-              return false;
-          }
-          break;
-
-      case GL_IMPLEMENTATION_COLOR_READ_TYPE:
-      case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
+        case GL_TEXTURE_BINDING_2D:
+        case GL_TEXTURE_BINDING_CUBE_MAP:
+        case GL_TEXTURE_BINDING_3D:
+        case GL_TEXTURE_BINDING_2D_ARRAY:
+            break;
+        case GL_TEXTURE_BINDING_EXTERNAL_OES:
+            if (!context->getExtensions().eglStreamConsumerExternal &&
+                !context->getExtensions().eglImageExternal)
+            {
+                context->handleError(Error(GL_INVALID_ENUM,
+                                           "Neither NV_EGL_stream_consumer_external nor "
+                                           "GL_OES_EGL_image_external extensions enabled"));
+                return false;
+            }
+            break;
+
+        case GL_IMPLEMENTATION_COLOR_READ_TYPE:
+        case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
         {
             if (context->getGLState().getReadFramebuffer()->checkStatus(
                     context->getContextState()) != GL_FRAMEBUFFER_COMPLETE)
             {
                 context->handleError(Error(GL_INVALID_OPERATION));
                 return false;
             }
 
@@ -2704,18 +2826,18 @@ bool ValidateStateQuery(ValidationContex
             if (!attachment)
             {
                 context->handleError(Error(GL_INVALID_OPERATION));
                 return false;
             }
         }
         break;
 
-      default:
-        break;
+        default:
+            break;
     }
 
     // pname is valid, but there are no parameters to return
     if (*numParams == 0)
     {
         return false;
     }
 
@@ -2762,17 +2884,18 @@ bool ValidateCopyTexImageParametersBase(
                                         Format *textureFormatOut)
 {
     if (level < 0 || xoffset < 0 || yoffset < 0 || zoffset < 0 || width < 0 || height < 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
-    if (std::numeric_limits<GLsizei>::max() - xoffset < width || std::numeric_limits<GLsizei>::max() - yoffset < height)
+    if (std::numeric_limits<GLsizei>::max() - xoffset < width ||
+        std::numeric_limits<GLsizei>::max() - yoffset < height)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     if (border != 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
@@ -2805,40 +2928,40 @@ bool ValidateCopyTexImageParametersBase(
         return false;
     }
 
     const gl::Caps &caps = context->getCaps();
 
     GLuint maxDimension = 0;
     switch (target)
     {
-      case GL_TEXTURE_2D:
-        maxDimension = caps.max2DTextureSize;
-        break;
-
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
-        maxDimension = caps.maxCubeMapTextureSize;
-        break;
-
-      case GL_TEXTURE_2D_ARRAY:
-        maxDimension = caps.max2DTextureSize;
-        break;
-
-      case GL_TEXTURE_3D:
-        maxDimension = caps.max3DTextureSize;
-        break;
-
-      default:
-          context->handleError(Error(GL_INVALID_ENUM));
-        return false;
+        case GL_TEXTURE_2D:
+            maxDimension = caps.max2DTextureSize;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+            maxDimension = caps.maxCubeMapTextureSize;
+            break;
+
+        case GL_TEXTURE_2D_ARRAY:
+            maxDimension = caps.max2DTextureSize;
+            break;
+
+        case GL_TEXTURE_3D:
+            maxDimension = caps.max3DTextureSize;
+            break;
+
+        default:
+            context->handleError(Error(GL_INVALID_ENUM));
+            return false;
     }
 
     gl::Texture *texture =
         state.getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
     if (!texture)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
@@ -2884,17 +3007,18 @@ bool ValidateCopyTexImageParametersBase(
 
         if (!formatInfo.textureSupport(context->getClientVersion(), context->getExtensions()))
         {
             context->handleError(Error(GL_INVALID_ENUM));
             return false;
         }
 
         int maxLevelDimension = (maxDimension >> level);
-        if (static_cast<int>(width) > maxLevelDimension || static_cast<int>(height) > maxLevelDimension)
+        if (static_cast<int>(width) > maxLevelDimension ||
+            static_cast<int>(height) > maxLevelDimension)
         {
             context->handleError(Error(GL_INVALID_VALUE));
             return false;
         }
     }
 
     if (textureFormatOut)
     {
@@ -2905,27 +3029,27 @@ bool ValidateCopyTexImageParametersBase(
 
 static bool ValidateDrawBase(ValidationContext *context,
                              GLenum mode,
                              GLsizei count,
                              GLsizei primcount)
 {
     switch (mode)
     {
-      case GL_POINTS:
-      case GL_LINES:
-      case GL_LINE_LOOP:
-      case GL_LINE_STRIP:
-      case GL_TRIANGLES:
-      case GL_TRIANGLE_STRIP:
-      case GL_TRIANGLE_FAN:
-        break;
-      default:
-          context->handleError(Error(GL_INVALID_ENUM));
-        return false;
+        case GL_POINTS:
+        case GL_LINES:
+        case GL_LINE_LOOP:
+        case GL_LINE_STRIP:
+        case GL_TRIANGLES:
+        case GL_TRIANGLE_STRIP:
+        case GL_TRIANGLE_FAN:
+            break;
+        default:
+            context->handleError(Error(GL_INVALID_ENUM));
+            return false;
     }
 
     if (count < 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
@@ -2937,29 +3061,28 @@ static bool ValidateDrawBase(ValidationC
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     Framebuffer *framebuffer = state.getDrawFramebuffer();
     if (context->getLimitations().noSeparateStencilRefsAndMasks)
     {
         const FramebufferAttachment *stencilBuffer = framebuffer->getStencilbuffer();
-        GLuint stencilBits                         = stencilBuffer ? stencilBuffer->getStencilSize() : 0;
-        GLuint minimumRequiredStencilMask          = (1 << stencilBits) - 1;
+        GLuint stencilBits                = stencilBuffer ? stencilBuffer->getStencilSize() : 0;
+        GLuint minimumRequiredStencilMask = (1 << stencilBits) - 1;
         const DepthStencilState &depthStencilState = state.getDepthStencilState();
         if ((depthStencilState.stencilWritemask & minimumRequiredStencilMask) !=
                 (depthStencilState.stencilBackWritemask & minimumRequiredStencilMask) ||
             state.getStencilRef() != state.getStencilBackRef() ||
             (depthStencilState.stencilMask & minimumRequiredStencilMask) !=
                 (depthStencilState.stencilBackMask & minimumRequiredStencilMask))
         {
             // Note: these separate values are not supported in WebGL, due to D3D's limitations. See
             // Section 6.10 of the WebGL 1.0 spec
-            ERR(
-                "This ANGLE implementation does not support separate front/back stencil "
+            ERR("This ANGLE implementation does not support separate front/back stencil "
                 "writemasks, reference values, or stencil mask values.");
             context->handleError(Error(GL_INVALID_OPERATION));
             return false;
         }
     }
 
     if (framebuffer->checkStatus(context->getContextState()) != GL_FRAMEBUFFER_COMPLETE)
     {
@@ -2976,20 +3099,21 @@ static bool ValidateDrawBase(ValidationC
 
     if (!program->validateSamplers(NULL, context->getCaps()))
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     // Uniform buffer validation
-    for (unsigned int uniformBlockIndex = 0; uniformBlockIndex < program->getActiveUniformBlockCount(); uniformBlockIndex++)
+    for (unsigned int uniformBlockIndex = 0;
+         uniformBlockIndex < program->getActiveUniformBlockCount(); uniformBlockIndex++)
     {
         const gl::UniformBlock &uniformBlock = program->getUniformBlockByIndex(uniformBlockIndex);
-        GLuint blockBinding = program->getUniformBlockBinding(uniformBlockIndex);
+        GLuint blockBinding                  = program->getUniformBlockBinding(uniformBlockIndex);
         const OffsetBindingPointer<Buffer> &uniformBuffer =
             state.getIndexedUniformBuffer(blockBinding);
 
         if (uniformBuffer.get() == nullptr)
         {
             // undefined behaviour
             context->handleError(
                 Error(GL_INVALID_OPERATION,
@@ -3027,21 +3151,22 @@ bool ValidateDrawArrays(ValidationContex
     if (first < 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     const State &state                          = context->getGLState();
     gl::TransformFeedback *curTransformFeedback = state.getCurrentTransformFeedback();
-    if (curTransformFeedback && curTransformFeedback->isActive() && !curTransformFeedback->isPaused() &&
-        curTransformFeedback->getPrimitiveMode() != mode)
+    if (curTransformFeedback && curTransformFeedback->isActive() &&
+        !curTransformFeedback->isPaused() && curTransformFeedback->getPrimitiveMode() != mode)
     {
         // It is an invalid operation to call DrawArrays or DrawArraysInstanced with a draw mode
-        // that does not match the current transform feedback object's draw mode (if transform feedback
+        // that does not match the current transform feedback object's draw mode (if transform
+        // feedback
         // is active), (3.0.2, section 2.14, pg 86)
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     if (!ValidateDrawBase(context, mode, count, primcount))
     {
         return false;
@@ -3050,17 +3175,21 @@ bool ValidateDrawArrays(ValidationContex
     if (!ValidateDrawAttribs(context, primcount, count))
     {
         return false;
     }
 
     return true;
 }
 
-bool ValidateDrawArraysInstanced(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+bool ValidateDrawArraysInstanced(Context *context,
+                                 GLenum mode,
+                                 GLint first,
+                                 GLsizei count,
+                                 GLsizei primcount)
 {
     if (primcount < 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     if (!ValidateDrawArrays(context, mode, first, count, primcount))
@@ -3090,17 +3219,21 @@ static bool ValidateDrawInstancedANGLE(C
     }
 
     context->handleError(Error(GL_INVALID_OPERATION,
                                "ANGLE_instanced_arrays requires that at least one active attribute"
                                "has a divisor of zero."));
     return false;
 }
 
-bool ValidateDrawArraysInstancedANGLE(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+bool ValidateDrawArraysInstancedANGLE(Context *context,
+                                      GLenum mode,
+                                      GLint first,
+                                      GLsizei count,
+                                      GLsizei primcount)
 {
     if (!ValidateDrawInstancedANGLE(context))
     {
         return false;
     }
 
     return ValidateDrawArraysInstanced(context, mode, first, count, primcount);
 }
@@ -3110,63 +3243,66 @@ bool ValidateDrawElements(ValidationCont
                           GLsizei count,
                           GLenum type,
                           const GLvoid *indices,
                           GLsizei primcount,
                           IndexRange *indexRangeOut)
 {
     switch (type)
     {
-      case GL_UNSIGNED_BYTE:
-      case GL_UNSIGNED_SHORT:
-          break;
-      case GL_UNSIGNED_INT:
-          if (context->getClientMajorVersion() < 3 && !context->getExtensions().elementIndexUint)
-          {
-              context->handleError(Error(GL_INVALID_ENUM));
-              return false;
-          }
-          break;
-      default:
-          context->handleError(Error(GL_INVALID_ENUM));
-          return false;
+        case GL_UNSIGNED_BYTE:
+        case GL_UNSIGNED_SHORT:
+            break;
+        case GL_UNSIGNED_INT:
+            if (context->getClientMajorVersion() < 3 && !context->getExtensions().elementIndexUint)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        default:
+            context->handleError(Error(GL_INVALID_ENUM));
+            return false;
     }
 
     const State &state = context->getGLState();
 
     gl::TransformFeedback *curTransformFeedback = state.getCurrentTransformFeedback();
-    if (curTransformFeedback && curTransformFeedback->isActive() && !curTransformFeedback->isPaused())
-    {
-        // It is an invalid operation to call DrawElements, DrawRangeElements or DrawElementsInstanced
+    if (curTransformFeedback && curTransformFeedback->isActive() &&
+        !curTransformFeedback->isPaused())
+    {
+        // It is an invalid operation to call DrawElements, DrawRangeElements or
+        // DrawElementsInstanced
         // while transform feedback is active, (3.0.2, section 2.14, pg 86)
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     // Check for mapped buffers
     if (state.hasMappedBuffer(GL_ELEMENT_ARRAY_BUFFER))
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
-    const gl::VertexArray *vao = state.getVertexArray();
+    const gl::VertexArray *vao     = state.getVertexArray();
     gl::Buffer *elementArrayBuffer = vao->getElementArrayBuffer().get();
     if (!indices && !elementArrayBuffer)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     if (elementArrayBuffer)
     {
         const gl::Type &typeInfo = gl::GetTypeInfo(type);
 
         GLint64 offset = reinterpret_cast<GLint64>(indices);
-        GLint64 byteCount = static_cast<GLint64>(typeInfo.bytes) * static_cast<GLint64>(count)+offset;
+        GLint64 byteCount =
+            static_cast<GLint64>(typeInfo.bytes) * static_cast<GLint64>(count) + offset;
 
         // check for integer overflows
         if (static_cast<GLuint>(count) > (std::numeric_limits<GLuint>::max() / typeInfo.bytes) ||
             byteCount > static_cast<GLint64>(std::numeric_limits<GLuint>::max()))
         {
             context->handleError(Error(GL_OUT_OF_MEMORY));
             return false;
         }
@@ -3214,17 +3350,17 @@ bool ValidateDrawElements(ValidationCont
     // The ES3 spec does not specify behaviour here, it is undefined, but ANGLE should always
     // return an error if possible here.
     if (static_cast<GLuint64>(indexRangeOut->end) >= context->getCaps().maxElementIndex)
     {
         context->handleError(Error(GL_INVALID_OPERATION, g_ExceedsMaxElementErrorMessage));
         return false;
     }
 
-    if (!ValidateDrawAttribs(context, primcount, static_cast<GLint>(indexRangeOut->end + 1)))
+    if (!ValidateDrawAttribs(context, primcount, static_cast<GLint>(indexRangeOut->vertexCount())))
     {
         return false;
     }
 
     // No op if there are no real indices in the index data (all are primitive restart).
     return (indexRangeOut->vertexIndexCount > 0);
 }
 
@@ -3259,21 +3395,25 @@ bool ValidateDrawElementsInstancedANGLE(
                                         GLsizei primcount,
                                         IndexRange *indexRangeOut)
 {
     if (!ValidateDrawInstancedANGLE(context))
     {
         return false;
     }
 
-    return ValidateDrawElementsInstanced(context, mode, count, type, indices, primcount, indexRangeOut);
+    return ValidateDrawElementsInstanced(context, mode, count, type, indices, primcount,
+                                         indexRangeOut);
 }
 
-bool ValidateFramebufferTextureBase(Context *context, GLenum target, GLenum attachment,
-                                    GLuint texture, GLint level)
+bool ValidateFramebufferTextureBase(Context *context,
+                                    GLenum target,
+                                    GLenum attachment,
+                                    GLuint texture,
+                                    GLint level)
 {
     if (!ValidFramebufferTarget(target))
     {
         context->handleError(Error(GL_INVALID_ENUM));
         return false;
     }
 
     if (!ValidateAttachmentTarget(context, attachment))
@@ -3306,20 +3446,25 @@ bool ValidateFramebufferTextureBase(Cont
         context->handleError(
             Error(GL_INVALID_OPERATION, "Cannot change default FBO's attachments"));
         return false;
     }
 
     return true;
 }
 
-bool ValidateFramebufferTexture2D(Context *context, GLenum target, GLenum attachment,
-                                  GLenum textarget, GLuint texture, GLint level)
+bool ValidateFramebufferTexture2D(Context *context,
+                                  GLenum target,
+                                  GLenum attachment,
+                                  GLenum textarget,
+                                  GLuint texture,
+                                  GLint level)
 {
-    // Attachments are required to be bound to level 0 without ES3 or the GL_OES_fbo_render_mipmap extension
+    // Attachments are required to be bound to level 0 without ES3 or the GL_OES_fbo_render_mipmap
+    // extension
     if (context->getClientMajorVersion() < 3 && !context->getExtensions().fboRenderMipmap &&
         level != 0)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     if (!ValidateFramebufferTextureBase(context, target, attachment, texture, level))
@@ -3331,54 +3476,54 @@ bool ValidateFramebufferTexture2D(Contex
     {
         gl::Texture *tex = context->getTexture(texture);
         ASSERT(tex);
 
         const gl::Caps &caps = context->getCaps();
 
         switch (textarget)
         {
-          case GL_TEXTURE_2D:
+            case GL_TEXTURE_2D:
             {
                 if (level > gl::log2(caps.max2DTextureSize))
                 {
                     context->handleError(Error(GL_INVALID_VALUE));
                     return false;
                 }
                 if (tex->getTarget() != GL_TEXTURE_2D)
                 {
                     context->handleError(Error(GL_INVALID_OPERATION));
                     return false;
                 }
             }
             break;
 
-          case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
-          case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
-          case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
-          case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
-          case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
-          case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+            case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+            case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+            case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+            case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+            case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+            case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
             {
                 if (level > gl::log2(caps.maxCubeMapTextureSize))
                 {
                     context->handleError(Error(GL_INVALID_VALUE));
                     return false;
                 }
                 if (tex->getTarget() != GL_TEXTURE_CUBE_MAP)
                 {
                     context->handleError(Error(GL_INVALID_OPERATION));
                     return false;
                 }
             }
             break;
 
-          default:
-              context->handleError(Error(GL_INVALID_ENUM));
-            return false;
+            default:
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
         }
 
         const Format &format = tex->getFormat(textarget, level);
         if (format.info->compressed)
         {
             context->handleError(Error(GL_INVALID_OPERATION));
             return false;
         }
@@ -3411,22 +3556,22 @@ bool ValidateGetUniformBase(Context *con
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     return true;
 }
 
-bool ValidateGetUniformfv(Context *context, GLuint program, GLint location, GLfloat* params)
+bool ValidateGetUniformfv(Context *context, GLuint program, GLint location, GLfloat *params)
 {
     return ValidateGetUniformBase(context, program, location);
 }
 
-bool ValidateGetUniformiv(Context *context, GLuint program, GLint location, GLint* params)
+bool ValidateGetUniformiv(Context *context, GLuint program, GLint location, GLint *params)
 {
     return ValidateGetUniformBase(context, program, location);
 }
 
 static bool ValidateSizedGetUniform(Context *context,
                                     GLuint program,
                                     GLint location,
                                     GLsizei bufSize,
@@ -3448,38 +3593,46 @@ static bool ValidateSizedGetUniform(Cont
         return false;
     }
 
     gl::Program *programObject = context->getProgram(program);
     ASSERT(programObject);
 
     // sized queries -- ensure the provided buffer is large enough
     const LinkedUniform &uniform = programObject->getUniformByLocation(location);
-    size_t requiredBytes = VariableExternalSize(uniform.type);
+    size_t requiredBytes         = VariableExternalSize(uniform.type);
     if (static_cast<size_t>(bufSize) < requiredBytes)
     {
         context->handleError(
             Error(GL_INVALID_OPERATION, "bufSize of at least %u is required.", requiredBytes));
         return false;
     }
 
     if (length)
     {
         *length = VariableComponentCount(uniform.type);
     }
 
     return true;
 }
 
-bool ValidateGetnUniformfvEXT(Context *context, GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+bool ValidateGetnUniformfvEXT(Context *context,
+                              GLuint program,
+                              GLint location,
+                              GLsizei bufSize,
+                              GLfloat *params)
 {
     return ValidateSizedGetUniform(context, program, location, bufSize, nullptr);
 }
 
-bool ValidateGetnUniformivEXT(Context *context, GLuint program, GLint location, GLsizei bufSize, GLint* params)
+bool ValidateGetnUniformivEXT(Context *context,
+                              GLuint program,
+                              GLint location,
+                              GLsizei bufSize,
+                              GLint *params)
 {
     return ValidateSizedGetUniform(context, program, location, bufSize, nullptr);
 }
 
 bool ValidateGetUniformfvRobustANGLE(Context *context,
                                      GLuint program,
                                      GLint location,
                                      GLsizei bufSize,
@@ -3529,18 +3682,21 @@ bool ValidateGetUniformuivRobustANGLE(Co
             Error(GL_INVALID_OPERATION, "Entry point requires at least OpenGL ES 3.0."));
         return false;
     }
 
     // bufSize is validated in ValidateSizedGetUniform
     return ValidateSizedGetUniform(context, program, location, bufSize, length);
 }
 
-bool ValidateDiscardFramebufferBase(Context *context, GLenum target, GLsizei numAttachments,
-                                    const GLenum *attachments, bool defaultFramebuffer)
+bool ValidateDiscardFramebufferBase(Context *context,
+                                    GLenum target,
+                                    GLsizei numAttachments,
+                                    const GLenum *attachments,
+                                    bool defaultFramebuffer)
 {
     if (numAttachments < 0)
     {
         context->handleError(Error(GL_INVALID_VALUE, "numAttachments must not be less than zero"));
         return false;
     }
 
     for (GLsizei i = 0; i < numAttachments; ++i)
@@ -3561,41 +3717,41 @@ bool ValidateDiscardFramebufferBase(Cont
                                            "supported color attachments"));
                 return false;
             }
         }
         else
         {
             switch (attachments[i])
             {
-              case GL_DEPTH_ATTACHMENT:
-              case GL_STENCIL_ATTACHMENT:
-              case GL_DEPTH_STENCIL_ATTACHMENT:
-                if (defaultFramebuffer)
-                {
-                    context->handleError(
-                        Error(GL_INVALID_ENUM,
-                              "Invalid attachment when the default framebuffer is bound"));
+                case GL_DEPTH_ATTACHMENT:
+                case GL_STENCIL_ATTACHMENT:
+                case GL_DEPTH_STENCIL_ATTACHMENT:
+                    if (defaultFramebuffer)
+                    {
+                        context->handleError(
+                            Error(GL_INVALID_ENUM,
+                                  "Invalid attachment when the default framebuffer is bound"));
+                        return false;
+                    }
+                    break;
+                case GL_COLOR:
+                case GL_DEPTH:
+                case GL_STENCIL:
+                    if (!defaultFramebuffer)
+                    {
+                        context->handleError(
+                            Error(GL_INVALID_ENUM,
+                                  "Invalid attachment when the default framebuffer is not bound"));
+                        return false;
+                    }
+                    break;
+                default:
+                    context->handleError(Error(GL_INVALID_ENUM, "Invalid attachment"));
                     return false;
-                }
-                break;
-              case GL_COLOR:
-              case GL_DEPTH:
-              case GL_STENCIL:
-                if (!defaultFramebuffer)
-                {
-                    context->handleError(
-                        Error(GL_INVALID_ENUM,
-                              "Invalid attachment when the default framebuffer is not bound"));
-                    return false;
-                }
-                break;
-              default:
-                  context->handleError(Error(GL_INVALID_ENUM, "Invalid attachment"));
-                return false;
             }
         }
     }
 
     return true;
 }
 
 bool ValidateInsertEventMarkerEXT(Context *context, GLsizei length, const char *marker)
@@ -4235,22 +4391,21 @@ bool ValidateGenerateMipmap(Context *con
     // GL_EXT_sRGB does not support mipmap generation on sRGB textures
     if (context->getClientMajorVersion() == 2 && format.info->colorEncoding == GL_SRGB)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     // Non-power of 2 ES2 check
-    if (!context->getExtensions().textureNPOT &&
+    if (context->getClientVersion() < Version(3, 0) && !context->getExtensions().textureNPOT &&
         (!isPow2(static_cast<int>(texture->getWidth(baseTarget, 0))) ||
          !isPow2(static_cast<int>(texture->getHeight(baseTarget, 0)))))
     {
-        ASSERT(context->getClientMajorVersion() <= 2 &&
-               (target == GL_TEXTURE_2D || target == GL_TEXTURE_CUBE_MAP));
+        ASSERT(target == GL_TEXTURE_2D || target == GL_TEXTURE_CUBE_MAP);
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     // Cube completeness check
     if (target == GL_TEXTURE_CUBE_MAP && !texture->getTextureState().isCubeComplete())
     {
         context->handleError(Error(GL_INVALID_OPERATION));
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/validationES.h
+++ b/gfx/angle/src/libANGLE/validationES.h
@@ -174,16 +174,28 @@ bool ValidateGetQueryObjecti64vRobustANG
 bool ValidateGetQueryObjectui64vEXT(Context *context, GLuint id, GLenum pname, GLuint64 *params);
 bool ValidateGetQueryObjectui64vRobustANGLE(Context *context,
                                             GLuint id,
                                             GLenum pname,
                                             GLsizei bufSize,
                                             GLsizei *length,
                                             GLuint64 *params);
 
+bool ValidateProgramUniform(Context *context,
+                            GLenum uniformType,
+                            GLuint program,
+                            GLint location,
+                            GLsizei count);
+bool ValidateProgramUniformMatrix(Context *context,
+                                  GLenum matrixType,
+                                  GLuint program,
+                                  GLint location,
+                                  GLsizei count,
+                                  GLboolean transpose);
+
 bool ValidateUniform(Context *context, GLenum uniformType, GLint location, GLsizei count);
 bool ValidateUniformMatrix(Context *context, GLenum matrixType, GLint location, GLsizei count,
                            GLboolean transpose);
 
 bool ValidateStateQuery(ValidationContext *context,
                         GLenum pname,
                         GLenum *nativeType,
                         unsigned int *numParams);
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/validationES2.cpp
+++ b/gfx/angle/src/libANGLE/validationES2.cpp
@@ -308,18 +308,17 @@ bool ValidateES2TexImageParameters(Conte
     }
 
     if (!ValidImageSizeParameters(context, target, level, width, height, 1, isSubImage))
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
-    if (level < 0 || xoffset < 0 ||
-        std::numeric_limits<GLsizei>::max() - xoffset < width ||
+    if (level < 0 || xoffset < 0 || std::numeric_limits<GLsizei>::max() - xoffset < width ||
         std::numeric_limits<GLsizei>::max() - yoffset < height)
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     if (!isSubImage && !isCompressed && internalformat != format)
     {
@@ -354,17 +353,18 @@ bool ValidateES2TexImageParameters(Conte
         }
     }
     else
     {
         context->handleError(Error(GL_INVALID_ENUM));
         return false;
     }
 
-    gl::Texture *texture = context->getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
+    gl::Texture *texture =
+        context->getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
     if (!texture)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     if (isSubImage)
     {
@@ -408,293 +408,295 @@ bool ValidateES2TexImageParameters(Conte
     }
 
     if (isCompressed)
     {
         GLenum actualInternalFormat =
             isSubImage ? texture->getFormat(target, level).asSized() : internalformat;
         switch (actualInternalFormat)
         {
-          case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-          case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-            if (!context->getExtensions().textureCompressionDXT1)
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-            if (!context->getExtensions().textureCompressionDXT1)
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-            if (!context->getExtensions().textureCompressionDXT5)
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
+            case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+            case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+                if (!context->getExtensions().textureCompressionDXT1)
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
+                if (!context->getExtensions().textureCompressionDXT1)
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
+                if (!context->getExtensions().textureCompressionDXT5)
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_ETC1_RGB8_OES:
+                if (!context->getExtensions().compressedETC1RGB8Texture)
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
+                if (!context->getExtensions().lossyETCDecode)
+                {
+                    context->handleError(Error(
+                        GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported"));
+                    return false;
+                }
+                break;
+            default:
+                context->handleError(
+                    Error(GL_INVALID_ENUM,
+                          "internalformat is not a supported compressed internal format"));
                 return false;
-            }
-            break;
-          case GL_ETC1_RGB8_OES:
-            if (!context->getExtensions().compressedETC1RGB8Texture)
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
-              if (!context->getExtensions().lossyETCDecode)
-              {
-                  context->handleError(
-                      Error(GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported"));
-                  return false;
-              }
-              break;
-          default:
-              context->handleError(Error(
-                  GL_INVALID_ENUM, "internalformat is not a supported compressed internal format"));
-              return false;
         }
         if (!ValidCompressedImageSize(context, actualInternalFormat, width, height))
         {
             context->handleError(Error(GL_INVALID_OPERATION));
             return false;
         }
     }
     else
     {
         // validate <type> by itself (used as secondary key below)
         switch (type)
         {
-          case GL_UNSIGNED_BYTE:
-          case GL_UNSIGNED_SHORT_5_6_5:
-          case GL_UNSIGNED_SHORT_4_4_4_4:
-          case GL_UNSIGNED_SHORT_5_5_5_1:
-          case GL_UNSIGNED_SHORT:
-          case GL_UNSIGNED_INT:
-          case GL_UNSIGNED_INT_24_8_OES:
-          case GL_HALF_FLOAT_OES:
-          case GL_FLOAT:
-            break;
-          default:
-              context->handleError(Error(GL_INVALID_ENUM));
-            return false;
+            case GL_UNSIGNED_BYTE:
+            case GL_UNSIGNED_SHORT_5_6_5:
+            case GL_UNSIGNED_SHORT_4_4_4_4:
+            case GL_UNSIGNED_SHORT_5_5_5_1:
+            case GL_UNSIGNED_SHORT:
+            case GL_UNSIGNED_INT:
+            case GL_UNSIGNED_INT_24_8_OES:
+            case GL_HALF_FLOAT_OES:
+            case GL_FLOAT:
+                break;
+            default:
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
         }
 
         // validate <format> + <type> combinations
         // - invalid <format> -> sets INVALID_ENUM
         // - invalid <format>+<type> combination -> sets INVALID_OPERATION
         switch (format)
         {
-          case GL_ALPHA:
-          case GL_LUMINANCE:
-          case GL_LUMINANCE_ALPHA:
-            switch (type)
-            {
-              case GL_UNSIGNED_BYTE:
-              case GL_FLOAT:
-              case GL_HALF_FLOAT_OES:
+            case GL_ALPHA:
+            case GL_LUMINANCE:
+            case GL_LUMINANCE_ALPHA:
+                switch (type)
+                {
+                    case GL_UNSIGNED_BYTE:
+                    case GL_FLOAT:
+                    case GL_HALF_FLOAT_OES:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
+                break;
+            case GL_RED:
+            case GL_RG:
+                if (!context->getExtensions().textureRG)
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                switch (type)
+                {
+                    case GL_UNSIGNED_BYTE:
+                    case GL_FLOAT:
+                    case GL_HALF_FLOAT_OES:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
+                break;
+            case GL_RGB:
+                switch (type)
+                {
+                    case GL_UNSIGNED_BYTE:
+                    case GL_UNSIGNED_SHORT_5_6_5:
+                    case GL_FLOAT:
+                    case GL_HALF_FLOAT_OES:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
                 break;
-              default:
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-            }
-            break;
-          case GL_RED:
-          case GL_RG:
-              if (!context->getExtensions().textureRG)
-              {
-                  context->handleError(Error(GL_INVALID_ENUM));
-                  return false;
-              }
-              switch (type)
-              {
-                case GL_UNSIGNED_BYTE:
-                case GL_FLOAT:
-                case GL_HALF_FLOAT_OES:
-                  break;
-                default:
-                    context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-              }
-              break;
-          case GL_RGB:
-            switch (type)
-            {
-              case GL_UNSIGNED_BYTE:
-              case GL_UNSIGNED_SHORT_5_6_5:
-              case GL_FLOAT:
-              case GL_HALF_FLOAT_OES:
+            case GL_RGBA:
+                switch (type)
+                {
+                    case GL_UNSIGNED_BYTE:
+                    case GL_UNSIGNED_SHORT_4_4_4_4:
+                    case GL_UNSIGNED_SHORT_5_5_5_1:
+                    case GL_FLOAT:
+                    case GL_HALF_FLOAT_OES:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
+                break;
+            case GL_BGRA_EXT:
+                switch (type)
+                {
+                    case GL_UNSIGNED_BYTE:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
                 break;
-              default:
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_RGBA:
-            switch (type)
-            {
-              case GL_UNSIGNED_BYTE:
-              case GL_UNSIGNED_SHORT_4_4_4_4:
-              case GL_UNSIGNED_SHORT_5_5_5_1:
-              case GL_FLOAT:
-              case GL_HALF_FLOAT_OES:
+            case GL_SRGB_EXT:
+            case GL_SRGB_ALPHA_EXT:
+                if (!context->getExtensions().sRGB)
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                switch (type)
+                {
+                    case GL_UNSIGNED_BYTE:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
+                break;
+            case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:  // error cases for compressed textures are
+                                                   // handled below
+            case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+            case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
+            case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
                 break;
-              default:
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_BGRA_EXT:
-            switch (type)
-            {
-              case GL_UNSIGNED_BYTE:
+            case GL_DEPTH_COMPONENT:
+                switch (type)
+                {
+                    case GL_UNSIGNED_SHORT:
+                    case GL_UNSIGNED_INT:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
                 break;
-              default:
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_SRGB_EXT:
-          case GL_SRGB_ALPHA_EXT:
-            if (!context->getExtensions().sRGB)
-            {
+            case GL_DEPTH_STENCIL_OES:
+                switch (type)
+                {
+                    case GL_UNSIGNED_INT_24_8_OES:
+                        break;
+                    default:
+                        context->handleError(Error(GL_INVALID_OPERATION));
+                        return false;
+                }
+                break;
+            default:
                 context->handleError(Error(GL_INVALID_ENUM));
                 return false;
-            }
-            switch (type)
-            {
-              case GL_UNSIGNED_BYTE:
-                break;
-              default:
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:  // error cases for compressed textures are handled below
-          case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-          case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-          case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-            break;
-          case GL_DEPTH_COMPONENT:
-            switch (type)
-            {
-              case GL_UNSIGNED_SHORT:
-              case GL_UNSIGNED_INT:
-                break;
-              default:
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_DEPTH_STENCIL_OES:
-            switch (type)
-            {
-              case GL_UNSIGNED_INT_24_8_OES:
-                break;
-              default:
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          default:
-              context->handleError(Error(GL_INVALID_ENUM));
-            return false;
         }
 
         switch (format)
         {
-          case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-          case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-            if (context->getExtensions().textureCompressionDXT1)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-            if (context->getExtensions().textureCompressionDXT3)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-            if (context->getExtensions().textureCompressionDXT5)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_ETC1_RGB8_OES:
-            if (context->getExtensions().compressedETC1RGB8Texture)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
-              if (context->getExtensions().lossyETCDecode)
-              {
-                  context->handleError(
-                      Error(GL_INVALID_OPERATION,
-                            "ETC1_RGB8_LOSSY_DECODE_ANGLE can't work with this type."));
-                  return false;
-              }
-              else
-              {
-                  context->handleError(
-                      Error(GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported."));
-                  return false;
-              }
-              break;
-          case GL_DEPTH_COMPONENT:
-          case GL_DEPTH_STENCIL_OES:
-            if (!context->getExtensions().depthTextures)
-            {
-                context->handleError(Error(GL_INVALID_VALUE));
-                return false;
-            }
-            if (target != GL_TEXTURE_2D)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            // OES_depth_texture supports loading depth data and multiple levels,
-            // but ANGLE_depth_texture does not
-            if (pixels != NULL || level != 0)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          default:
-            break;
+            case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+            case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+                if (context->getExtensions().textureCompressionDXT1)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
+                if (context->getExtensions().textureCompressionDXT3)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
+                if (context->getExtensions().textureCompressionDXT5)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_ETC1_RGB8_OES:
+                if (context->getExtensions().compressedETC1RGB8Texture)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
+                if (context->getExtensions().lossyETCDecode)
+                {
+                    context->handleError(
+                        Error(GL_INVALID_OPERATION,
+                              "ETC1_RGB8_LOSSY_DECODE_ANGLE can't work with this type."));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(
+                        GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported."));
+                    return false;
+                }
+                break;
+            case GL_DEPTH_COMPONENT:
+            case GL_DEPTH_STENCIL_OES:
+                if (!context->getExtensions().depthTextures)
+                {
+                    context->handleError(Error(GL_INVALID_VALUE));
+                    return false;
+                }
+                if (target != GL_TEXTURE_2D)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                // OES_depth_texture supports loading depth data and multiple levels,
+                // but ANGLE_depth_texture does not
+                if (pixels != NULL || level != 0)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            default:
+                break;
         }
 
         if (type == GL_FLOAT)
         {
             if (!context->getExtensions().textureFloat)
             {
                 context->handleError(Error(GL_INVALID_ENUM));
                 return false;
@@ -750,299 +752,260 @@ bool ValidateES2CopyTexImageParameters(V
     GLenum colorbufferFormat           = framebuffer->getReadColorbuffer()->getFormat().asSized();
     const auto &formatInfo             = *textureFormat.info;
 
     // [OpenGL ES 2.0.24] table 3.9
     if (isSubImage)
     {
         switch (formatInfo.format)
         {
-          case GL_ALPHA:
-            if (colorbufferFormat != GL_ALPHA8_EXT &&
-                colorbufferFormat != GL_RGBA4 &&
-                colorbufferFormat != GL_RGB5_A1 &&
-                colorbufferFormat != GL_RGBA8_OES &&
-                colorbufferFormat != GL_BGRA8_EXT)
-            {
+            case GL_ALPHA:
+                if (colorbufferFormat != GL_ALPHA8_EXT && colorbufferFormat != GL_RGBA4 &&
+                    colorbufferFormat != GL_RGB5_A1 && colorbufferFormat != GL_RGBA8_OES &&
+                    colorbufferFormat != GL_BGRA8_EXT)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_LUMINANCE:
+                if (colorbufferFormat != GL_R8_EXT && colorbufferFormat != GL_RG8_EXT &&
+                    colorbufferFormat != GL_RGB565 && colorbufferFormat != GL_RGB8_OES &&
+                    colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_RGBA8_OES && colorbufferFormat != GL_BGRA8_EXT)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_RED_EXT:
+                if (colorbufferFormat != GL_R8_EXT && colorbufferFormat != GL_RG8_EXT &&
+                    colorbufferFormat != GL_RGB565 && colorbufferFormat != GL_RGB8_OES &&
+                    colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_RGBA8_OES && colorbufferFormat != GL_R32F &&
+                    colorbufferFormat != GL_RG32F && colorbufferFormat != GL_RGB32F &&
+                    colorbufferFormat != GL_RGBA32F && colorbufferFormat != GL_BGRA8_EXT)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_RG_EXT:
+                if (colorbufferFormat != GL_RG8_EXT && colorbufferFormat != GL_RGB565 &&
+                    colorbufferFormat != GL_RGB8_OES && colorbufferFormat != GL_RGBA4 &&
+                    colorbufferFormat != GL_RGB5_A1 && colorbufferFormat != GL_RGBA8_OES &&
+                    colorbufferFormat != GL_RG32F && colorbufferFormat != GL_RGB32F &&
+                    colorbufferFormat != GL_RGBA32F && colorbufferFormat != GL_BGRA8_EXT)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_RGB:
+                if (colorbufferFormat != GL_RGB565 && colorbufferFormat != GL_RGB8_OES &&
+                    colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_RGBA8_OES && colorbufferFormat != GL_RGB32F &&
+                    colorbufferFormat != GL_RGBA32F && colorbufferFormat != GL_BGRA8_EXT)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_LUMINANCE_ALPHA:
+            case GL_RGBA:
+                if (colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_RGBA8_OES && colorbufferFormat != GL_RGBA32F &&
+                    colorbufferFormat != GL_BGRA8_EXT)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+            case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+            case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
+            case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
+            case GL_ETC1_RGB8_OES:
+            case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
                 context->handleError(Error(GL_INVALID_OPERATION));
                 return false;
-            }
-            break;
-          case GL_LUMINANCE:
-              if (colorbufferFormat != GL_R8_EXT &&
-                  colorbufferFormat != GL_RG8_EXT &&
-                  colorbufferFormat != GL_RGB565 &&
-                  colorbufferFormat != GL_RGB8_OES &&
-                  colorbufferFormat != GL_RGBA4 &&
-                  colorbufferFormat != GL_RGB5_A1 &&
-                  colorbufferFormat != GL_RGBA8_OES &&
-                  colorbufferFormat != GL_BGRA8_EXT)
-              {
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-              }
-              break;
-          case GL_RED_EXT:
-              if (colorbufferFormat != GL_R8_EXT &&
-                  colorbufferFormat != GL_RG8_EXT &&
-                  colorbufferFormat != GL_RGB565 &&
-                  colorbufferFormat != GL_RGB8_OES &&
-                  colorbufferFormat != GL_RGBA4 &&
-                  colorbufferFormat != GL_RGB5_A1 &&
-                  colorbufferFormat != GL_RGBA8_OES &&
-                  colorbufferFormat != GL_BGRA8_EXT &&
-                  colorbufferFormat != GL_R32F &&
-                  colorbufferFormat != GL_RG32F &&
-                  colorbufferFormat != GL_RGB32F &&
-                  colorbufferFormat != GL_RGBA32F)
-              {
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-              }
-              break;
-          case GL_RG_EXT:
-              if (colorbufferFormat != GL_RG8_EXT &&
-                  colorbufferFormat != GL_RGB565 &&
-                  colorbufferFormat != GL_RGB8_OES &&
-                  colorbufferFormat != GL_RGBA4 &&
-                  colorbufferFormat != GL_RGB5_A1 &&
-                  colorbufferFormat != GL_RGBA8_OES &&
-                  colorbufferFormat != GL_BGRA8_EXT &&
-                  colorbufferFormat != GL_RG32F &&
-                  colorbufferFormat != GL_RGB32F &&
-                  colorbufferFormat != GL_RGBA32F)
-              {
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-              }
-              break;
-          case GL_RGB:
-            if (colorbufferFormat != GL_RGB565 &&
-                colorbufferFormat != GL_RGB8_OES &&
-                colorbufferFormat != GL_RGBA4 &&
-                colorbufferFormat != GL_RGB5_A1 &&
-                colorbufferFormat != GL_RGBA8_OES &&
-                colorbufferFormat != GL_BGRA8_EXT &&
-                colorbufferFormat != GL_RGB32F &&
-                colorbufferFormat != GL_RGBA32F)
-            {
+            case GL_DEPTH_COMPONENT:
+            case GL_DEPTH_STENCIL_OES:
                 context->handleError(Error(GL_INVALID_OPERATION));
                 return false;
-            }
-            break;
-          case GL_LUMINANCE_ALPHA:
-          case GL_RGBA:
-            if (colorbufferFormat != GL_RGBA4 &&
-                colorbufferFormat != GL_RGB5_A1 &&
-                colorbufferFormat != GL_RGBA8_OES &&
-                colorbufferFormat != GL_BGRA8_EXT &&
-                colorbufferFormat != GL_RGBA32F)
-            {
+            default:
                 context->handleError(Error(GL_INVALID_OPERATION));
                 return false;
-            }
-            break;
-          case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-          case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-          case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-          case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-          case GL_ETC1_RGB8_OES:
-          case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
-              context->handleError(Error(GL_INVALID_OPERATION));
-            return false;
-          case GL_DEPTH_COMPONENT:
-          case GL_DEPTH_STENCIL_OES:
-              context->handleError(Error(GL_INVALID_OPERATION));
-            return false;
-          default:
-              context->handleError(Error(GL_INVALID_OPERATION));
-            return false;
         }
 
         if (formatInfo.type == GL_FLOAT && !context->getExtensions().textureFloat)
         {
             context->handleError(Error(GL_INVALID_OPERATION));
             return false;
         }
     }
     else
     {
         switch (internalformat)
         {
-          case GL_ALPHA:
-            if (colorbufferFormat != GL_ALPHA8_EXT &&
-                colorbufferFormat != GL_RGBA4 &&
-                colorbufferFormat != GL_RGB5_A1 &&
-                colorbufferFormat != GL_BGRA8_EXT &&
-                colorbufferFormat != GL_RGBA8_OES &&
-                colorbufferFormat != GL_BGR5_A1_ANGLEX)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_LUMINANCE:
-              if (colorbufferFormat != GL_R8_EXT &&
-                  colorbufferFormat != GL_RG8_EXT &&
-                  colorbufferFormat != GL_RGB565 &&
-                  colorbufferFormat != GL_RGB8_OES &&
-                  colorbufferFormat != GL_RGBA4 &&
-                  colorbufferFormat != GL_RGB5_A1 &&
-                  colorbufferFormat != GL_BGRA8_EXT &&
-                  colorbufferFormat != GL_RGBA8_OES &&
-                  colorbufferFormat != GL_BGR5_A1_ANGLEX)
-              {
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-              }
-              break;
-          case GL_RED_EXT:
-              if (colorbufferFormat != GL_R8_EXT &&
-                  colorbufferFormat != GL_RG8_EXT &&
-                  colorbufferFormat != GL_RGB565 &&
-                  colorbufferFormat != GL_RGB8_OES &&
-                  colorbufferFormat != GL_RGBA4 &&
-                  colorbufferFormat != GL_RGB5_A1 &&
-                  colorbufferFormat != GL_BGRA8_EXT &&
-                  colorbufferFormat != GL_RGBA8_OES &&
-                  colorbufferFormat != GL_BGR5_A1_ANGLEX)
-              {
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-              }
-              break;
-          case GL_RG_EXT:
-              if (colorbufferFormat != GL_RG8_EXT &&
-                  colorbufferFormat != GL_RGB565 &&
-                  colorbufferFormat != GL_RGB8_OES &&
-                  colorbufferFormat != GL_RGBA4 &&
-                  colorbufferFormat != GL_RGB5_A1 &&
-                  colorbufferFormat != GL_BGRA8_EXT &&
-                  colorbufferFormat != GL_RGBA8_OES &&
-                  colorbufferFormat != GL_BGR5_A1_ANGLEX)
-              {
-                  context->handleError(Error(GL_INVALID_OPERATION));
-                  return false;
-              }
-              break;
-          case GL_RGB:
-            if (colorbufferFormat != GL_RGB565 &&
-                colorbufferFormat != GL_RGB8_OES &&
-                colorbufferFormat != GL_RGBA4 &&
-                colorbufferFormat != GL_RGB5_A1 &&
-                colorbufferFormat != GL_BGRA8_EXT &&
-                colorbufferFormat != GL_RGBA8_OES &&
-                colorbufferFormat != GL_BGR5_A1_ANGLEX)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_LUMINANCE_ALPHA:
-          case GL_RGBA:
-            if (colorbufferFormat != GL_RGBA4 &&
-                colorbufferFormat != GL_RGB5_A1 &&
-                colorbufferFormat != GL_BGRA8_EXT &&
-                colorbufferFormat != GL_RGBA8_OES &&
-                colorbufferFormat != GL_BGR5_A1_ANGLEX)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            break;
-          case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-          case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-            if (context->getExtensions().textureCompressionDXT1)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
+            case GL_ALPHA:
+                if (colorbufferFormat != GL_ALPHA8_EXT && colorbufferFormat != GL_RGBA4 &&
+                    colorbufferFormat != GL_RGB5_A1 && colorbufferFormat != GL_BGRA8_EXT &&
+                    colorbufferFormat != GL_RGBA8_OES && colorbufferFormat != GL_BGR5_A1_ANGLEX)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_LUMINANCE:
+                if (colorbufferFormat != GL_R8_EXT && colorbufferFormat != GL_RG8_EXT &&
+                    colorbufferFormat != GL_RGB565 && colorbufferFormat != GL_RGB8_OES &&
+                    colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_BGRA8_EXT && colorbufferFormat != GL_RGBA8_OES &&
+                    colorbufferFormat != GL_BGR5_A1_ANGLEX)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_RED_EXT:
+                if (colorbufferFormat != GL_R8_EXT && colorbufferFormat != GL_RG8_EXT &&
+                    colorbufferFormat != GL_RGB565 && colorbufferFormat != GL_RGB8_OES &&
+                    colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_BGRA8_EXT && colorbufferFormat != GL_RGBA8_OES &&
+                    colorbufferFormat != GL_BGR5_A1_ANGLEX)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_RG_EXT:
+                if (colorbufferFormat != GL_RG8_EXT && colorbufferFormat != GL_RGB565 &&
+                    colorbufferFormat != GL_RGB8_OES && colorbufferFormat != GL_RGBA4 &&
+                    colorbufferFormat != GL_RGB5_A1 && colorbufferFormat != GL_BGRA8_EXT &&
+                    colorbufferFormat != GL_RGBA8_OES && colorbufferFormat != GL_BGR5_A1_ANGLEX)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_RGB:
+                if (colorbufferFormat != GL_RGB565 && colorbufferFormat != GL_RGB8_OES &&
+                    colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_BGRA8_EXT && colorbufferFormat != GL_RGBA8_OES &&
+                    colorbufferFormat != GL_BGR5_A1_ANGLEX)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_LUMINANCE_ALPHA:
+            case GL_RGBA:
+                if (colorbufferFormat != GL_RGBA4 && colorbufferFormat != GL_RGB5_A1 &&
+                    colorbufferFormat != GL_BGRA8_EXT && colorbufferFormat != GL_RGBA8_OES &&
+                    colorbufferFormat != GL_BGR5_A1_ANGLEX)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+            case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+                if (context->getExtensions().textureCompressionDXT1)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
+                if (context->getExtensions().textureCompressionDXT3)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
+                if (context->getExtensions().textureCompressionDXT5)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_ETC1_RGB8_OES:
+                if (context->getExtensions().compressedETC1RGB8Texture)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+                break;
+            case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
+                if (context->getExtensions().lossyETCDecode)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION,
+                                               "ETC1_RGB8_LOSSY_DECODE_ANGLE can't be copied to."));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(
+                        GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported."));
+                    return false;
+                }
+                break;
+            case GL_DEPTH_COMPONENT:
+            case GL_DEPTH_COMPONENT16:
+            case GL_DEPTH_COMPONENT32_OES:
+            case GL_DEPTH_STENCIL_OES:
+            case GL_DEPTH24_STENCIL8_OES:
+                if (context->getExtensions().depthTextures)
+                {
+                    context->handleError(Error(GL_INVALID_OPERATION));
+                    return false;
+                }
+                else
+                {
+                    context->handleError(Error(GL_INVALID_ENUM));
+                    return false;
+                }
+            default:
                 context->handleError(Error(GL_INVALID_ENUM));
                 return false;
-            }
-            break;
-          case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-            if (context->getExtensions().textureCompressionDXT3)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-            if (context->getExtensions().textureCompressionDXT5)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_ETC1_RGB8_OES:
-            if (context->getExtensions().compressedETC1RGB8Texture)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-            break;
-          case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
-              if (context->getExtensions().lossyETCDecode)
-              {
-                  context->handleError(Error(GL_INVALID_OPERATION,
-                                             "ETC1_RGB8_LOSSY_DECODE_ANGLE can't be copied to."));
-                  return false;
-              }
-              else
-              {
-                  context->handleError(
-                      Error(GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported."));
-                  return false;
-              }
-              break;
-          case GL_DEPTH_COMPONENT:
-          case GL_DEPTH_COMPONENT16:
-          case GL_DEPTH_COMPONENT32_OES:
-          case GL_DEPTH_STENCIL_OES:
-          case GL_DEPTH24_STENCIL8_OES:
-            if (context->getExtensions().depthTextures)
-            {
-                context->handleError(Error(GL_INVALID_OPERATION));
-                return false;
-            }
-            else
-            {
-                context->handleError(Error(GL_INVALID_ENUM));
-                return false;
-            }
-          default:
-              context->handleError(Error(GL_INVALID_ENUM));
-            return false;
         }
     }
 
     // If width or height is zero, it is a no-op.  Return false without setting an error.
     return (width > 0 && height > 0);
 }
 
-bool ValidateES2TexStorageParameters(Context *context, GLenum target, GLsizei levels, GLenum internalformat,
-                                     GLsizei width, GLsizei height)
+bool ValidateES2TexStorageParameters(Context *context,
+                                     GLenum target,
+                                     GLsizei levels,
+                                     GLenum internalformat,
+                                     GLsizei width,
+                                     GLsizei height)
 {
     if (target != GL_TEXTURE_2D && target != GL_TEXTURE_CUBE_MAP)
     {
         context->handleError(Error(GL_INVALID_ENUM));
         return false;
     }
 
     if (width < 1 || height < 1 || levels < 1)
@@ -1069,141 +1032,141 @@ bool ValidateES2TexStorageParameters(Con
         context->handleError(Error(GL_INVALID_ENUM));
         return false;
     }
 
     const gl::Caps &caps = context->getCaps();
 
     switch (target)
     {
-      case GL_TEXTURE_2D:
-        if (static_cast<GLuint>(width) > caps.max2DTextureSize ||
-            static_cast<GLuint>(height) > caps.max2DTextureSize)
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
+        case GL_TEXTURE_2D:
+            if (static_cast<GLuint>(width) > caps.max2DTextureSize ||
+                static_cast<GLuint>(height) > caps.max2DTextureSize)
+            {
+                context->handleError(Error(GL_INVALID_VALUE));
+                return false;
+            }
+            break;
+        case GL_TEXTURE_CUBE_MAP:
+            if (static_cast<GLuint>(width) > caps.maxCubeMapTextureSize ||
+                static_cast<GLuint>(height) > caps.maxCubeMapTextureSize)
+            {
+                context->handleError(Error(GL_INVALID_VALUE));
+                return false;
+            }
+            break;
+        default:
+            context->handleError(Error(GL_INVALID_ENUM));
             return false;
-        }
-        break;
-      case GL_TEXTURE_CUBE_MAP:
-        if (static_cast<GLuint>(width) > caps.maxCubeMapTextureSize ||
-            static_cast<GLuint>(height) > caps.maxCubeMapTextureSize)
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
-            return false;
-        }
-        break;
-      default:
-          context->handleError(Error(GL_INVALID_ENUM));
-        return false;
     }
 
     if (levels != 1 && !context->getExtensions().textureNPOT)
     {
         if (!gl::isPow2(width) || !gl::isPow2(height))
         {
             context->handleError(Error(GL_INVALID_OPERATION));
             return false;
         }
     }
 
     switch (internalformat)
     {
-      case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-      case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-        if (!context->getExtensions().textureCompressionDXT1)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        break;
-      case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-        if (!context->getExtensions().textureCompressionDXT3)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        break;
-      case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-        if (!context->getExtensions().textureCompressionDXT5)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        break;
-      case GL_ETC1_RGB8_OES:
-        if (!context->getExtensions().compressedETC1RGB8Texture)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        break;
-      case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
-          if (!context->getExtensions().lossyETCDecode)
-          {
-              context->handleError(
-                  Error(GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported."));
-              return false;
-          }
-          break;
-      case GL_RGBA32F_EXT:
-      case GL_RGB32F_EXT:
-      case GL_ALPHA32F_EXT:
-      case GL_LUMINANCE32F_EXT:
-      case GL_LUMINANCE_ALPHA32F_EXT:
-        if (!context->getExtensions().textureFloat)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        break;
-      case GL_RGBA16F_EXT:
-      case GL_RGB16F_EXT:
-      case GL_ALPHA16F_EXT:
-      case GL_LUMINANCE16F_EXT:
-      case GL_LUMINANCE_ALPHA16F_EXT:
-        if (!context->getExtensions().textureHalfFloat)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        break;
-      case GL_R8_EXT:
-      case GL_RG8_EXT:
-      case GL_R16F_EXT:
-      case GL_RG16F_EXT:
-      case GL_R32F_EXT:
-      case GL_RG32F_EXT:
-        if (!context->getExtensions().textureRG)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        break;
-      case GL_DEPTH_COMPONENT16:
-      case GL_DEPTH_COMPONENT32_OES:
-      case GL_DEPTH24_STENCIL8_OES:
-        if (!context->getExtensions().depthTextures)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return false;
-        }
-        if (target != GL_TEXTURE_2D)
-        {
-            context->handleError(Error(GL_INVALID_OPERATION));
-            return false;
-        }
-        // ANGLE_depth_texture only supports 1-level textures
-        if (levels != 1)
-        {
-            context->handleError(Error(GL_INVALID_OPERATION));
-            return false;
-        }
-        break;
-      default:
-        break;
+        case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+        case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+            if (!context->getExtensions().textureCompressionDXT1)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
+            if (!context->getExtensions().textureCompressionDXT3)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
+            if (!context->getExtensions().textureCompressionDXT5)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        case GL_ETC1_RGB8_OES:
+            if (!context->getExtensions().compressedETC1RGB8Texture)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
+            if (!context->getExtensions().lossyETCDecode)
+            {
+                context->handleError(
+                    Error(GL_INVALID_ENUM, "ANGLE_lossy_etc_decode extension is not supported."));
+                return false;
+            }
+            break;
+        case GL_RGBA32F_EXT:
+        case GL_RGB32F_EXT:
+        case GL_ALPHA32F_EXT:
+        case GL_LUMINANCE32F_EXT:
+        case GL_LUMINANCE_ALPHA32F_EXT:
+            if (!context->getExtensions().textureFloat)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        case GL_RGBA16F_EXT:
+        case GL_RGB16F_EXT:
+        case GL_ALPHA16F_EXT:
+        case GL_LUMINANCE16F_EXT:
+        case GL_LUMINANCE_ALPHA16F_EXT:
+            if (!context->getExtensions().textureHalfFloat)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        case GL_R8_EXT:
+        case GL_RG8_EXT:
+        case GL_R16F_EXT:
+        case GL_RG16F_EXT:
+        case GL_R32F_EXT:
+        case GL_RG32F_EXT:
+            if (!context->getExtensions().textureRG)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            break;
+        case GL_DEPTH_COMPONENT16:
+        case GL_DEPTH_COMPONENT32_OES:
+        case GL_DEPTH24_STENCIL8_OES:
+            if (!context->getExtensions().depthTextures)
+            {
+                context->handleError(Error(GL_INVALID_ENUM));
+                return false;
+            }
+            if (target != GL_TEXTURE_2D)
+            {
+                context->handleError(Error(GL_INVALID_OPERATION));
+                return false;
+            }
+            // ANGLE_depth_texture only supports 1-level textures
+            if (levels != 1)
+            {
+                context->handleError(Error(GL_INVALID_OPERATION));
+                return false;
+            }
+            break;
+        default:
+            break;
     }
 
     gl::Texture *texture = context->getTargetTexture(target);
     if (!texture || texture->id() == 0)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
@@ -1212,39 +1175,42 @@ bool ValidateES2TexStorageParameters(Con
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     return true;
 }
 
-bool ValidateDiscardFramebufferEXT(Context *context, GLenum target, GLsizei numAttachments,
+bool ValidateDiscardFramebufferEXT(Context *context,
+                                   GLenum target,
+                                   GLsizei numAttachments,
                                    const GLenum *attachments)
 {
     if (!context->getExtensions().discardFramebuffer)
     {
         context->handleError(Error(GL_INVALID_OPERATION, "Extension not enabled"));
         return false;
     }
 
     bool defaultFramebuffer = false;
 
     switch (target)
     {
-      case GL_FRAMEBUFFER:
-          defaultFramebuffer =
-              (context->getGLState().getTargetFramebuffer(GL_FRAMEBUFFER)->id() == 0);
-          break;
-      default:
-          context->handleError(Error(GL_INVALID_ENUM, "Invalid framebuffer target"));
-        return false;
-    }
-
-    return ValidateDiscardFramebufferBase(context, target, numAttachments, attachments, defaultFramebuffer);
+        case GL_FRAMEBUFFER:
+            defaultFramebuffer =
+                (context->getGLState().getTargetFramebuffer(GL_FRAMEBUFFER)->id() == 0);
+            break;
+        default:
+            context->handleError(Error(GL_INVALID_ENUM, "Invalid framebuffer target"));
+            return false;
+    }
+
+    return ValidateDiscardFramebufferBase(context, target, numAttachments, attachments,
+                                          defaultFramebuffer);
 }
 
 bool ValidateBindVertexArrayOES(Context *context, GLuint array)
 {
     if (!context->getExtensions().vertexArrayObject)
     {
         context->handleError(Error(GL_INVALID_OPERATION, "Extension not enabled"));
         return false;
@@ -1924,18 +1890,17 @@ bool ValidateBlitFramebufferANGLE(Contex
                 drawFramebuffer->getAttachment(attachments[i]);
 
             if (readBuffer && drawBuffer)
             {
                 if (IsPartialBlit(context, readBuffer, drawBuffer, srcX0, srcY0, srcX1, srcY1,
                                   dstX0, dstY0, dstX1, dstY1))
                 {
                     // only whole-buffer copies are permitted
-                    ERR(
-                        "Only whole-buffer depth and stencil blits are supported by this "
+                    ERR("Only whole-buffer depth and stencil blits are supported by this "
                         "implementation.");
                     context->handleError(Error(GL_INVALID_OPERATION));
                     return false;
                 }
 
                 if (readBuffer->getSamples() != 0 || drawBuffer->getSamples() != 0)
                 {
                     context->handleError(Error(GL_INVALID_OPERATION));
@@ -2111,17 +2076,17 @@ bool ValidateCompressedTexImage2D(Contex
                                              data))
         {
             return false;
         }
     }
 
     const InternalFormat &formatInfo = GetInternalFormatInfo(internalformat);
     auto blockSizeOrErr =
-        formatInfo.computeCompressedImageSize(gl::Extents(width, height, 1));
+        formatInfo.computeCompressedImageSize(GL_UNSIGNED_BYTE, gl::Extents(width, height, 1));
     if (blockSizeOrErr.isError())
     {
         context->handleError(blockSizeOrErr.getError());
         return false;
     }
 
     if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSizeOrErr.getResult())
     {
@@ -2159,17 +2124,17 @@ bool ValidateCompressedTexSubImage2D(Con
                                              data))
         {
             return false;
         }
     }
 
     const InternalFormat &formatInfo = GetInternalFormatInfo(format);
     auto blockSizeOrErr =
-        formatInfo.computeCompressedImageSize(gl::Extents(width, height, 1));
+        formatInfo.computeCompressedImageSize(GL_UNSIGNED_BYTE, gl::Extents(width, height, 1));
     if (blockSizeOrErr.isError())
     {
         context->handleError(blockSizeOrErr.getError());
         return false;
     }
 
     if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSizeOrErr.getResult())
     {
@@ -2289,16 +2254,25 @@ bool ValidateBindTexture(Context *contex
         case GL_TEXTURE_3D:
         case GL_TEXTURE_2D_ARRAY:
             if (context->getClientMajorVersion() < 3)
             {
                 context->handleError(Error(GL_INVALID_ENUM, "GLES 3.0 disabled"));
                 return false;
             }
             break;
+
+        case GL_TEXTURE_2D_MULTISAMPLE:
+            if (context->getClientVersion() < Version(3, 1))
+            {
+                context->handleError(Error(GL_INVALID_ENUM, "Context does not support GLES3.1"));
+                return false;
+            }
+            break;
+
         case GL_TEXTURE_EXTERNAL_OES:
             if (!context->getExtensions().eglImageExternal &&
                 !context->getExtensions().eglStreamConsumerExternal)
             {
                 context->handleError(
                     Error(GL_INVALID_ENUM, "External texture extension not enabled"));
                 return false;
             }
@@ -3140,18 +3114,19 @@ bool ValidateProgramPathFragmentInputGen
                 break;
             case GL_FLOAT_VEC3:
                 expectedComponents = 3;
                 break;
             case GL_FLOAT_VEC4:
                 expectedComponents = 4;
                 break;
             default:
-                context->handleError(Error(GL_INVALID_OPERATION,
-                    "Fragment input type is not a floating point scalar or vector."));
+                context->handleError(
+                    Error(GL_INVALID_OPERATION,
+                          "Fragment input type is not a floating point scalar or vector."));
                 return false;
         }
         if (expectedComponents != components && genMode != GL_NONE)
         {
             context->handleError(Error(GL_INVALID_OPERATION, "Unexpected number of components"));
             return false;
         }
     }
@@ -3542,30 +3517,30 @@ bool ValidateBufferSubData(ValidationCon
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     return true;
 }
 
-bool ValidateEnableExtensionANGLE(ValidationContext *context, const GLchar *name)
+bool ValidateRequestExtensionANGLE(ValidationContext *context, const GLchar *name)
 {
-    if (!context->getExtensions().webglCompatibility)
+    if (!context->getExtensions().requestExtension)
     {
         context->handleError(
-            Error(GL_INVALID_OPERATION, "GL_ANGLE_webgl_compatibility is not available."));
+            Error(GL_INVALID_OPERATION, "GL_ANGLE_request_extension is not available."));
         return false;
     }
 
     const ExtensionInfoMap &extensionInfos = GetExtensionInfoMap();
     auto extension                         = extensionInfos.find(name);
-    if (extension == extensionInfos.end() || !extension->second.Enableable)
-    {
-        context->handleError(Error(GL_INVALID_OPERATION, "Extension %s is not enableable.", name));
+    if (extension == extensionInfos.end() || !extension->second.Requestable)
+    {
+        context->handleError(Error(GL_INVALID_OPERATION, "Extension %s is not requestable.", name));
         return false;
     }
 
     return true;
 }
 
 bool ValidateActiveTexture(ValidationContext *context, GLenum texture)
 {
@@ -3859,9 +3834,47 @@ bool ValidateBlendFuncSeparate(Validatio
                                        "supported by this implementation."));
             return false;
         }
     }
 
     return true;
 }
 
+bool ValidateGetString(Context *context, GLenum name)
+{
+    switch (name)
+    {
+        case GL_VENDOR:
+        case GL_RENDERER:
+        case GL_VERSION:
+        case GL_SHADING_LANGUAGE_VERSION:
+        case GL_EXTENSIONS:
+            break;
+
+        case GL_REQUESTABLE_EXTENSIONS_ANGLE:
+            if (!context->getExtensions().requestExtension)
+            {
+                context->handleError(Error(GL_INVALID_ENUM, "Invalid name."));
+                return false;
+            }
+            break;
+
+        default:
+            context->handleError(Error(GL_INVALID_ENUM, "Invalid name."));
+            return false;
+    }
+
+    return true;
+}
+
+bool ValidateLineWidth(ValidationContext *context, GLfloat width)
+{
+    if (width <= 0.0f || isNaN(width))
+    {
+        context->handleError(Error(GL_INVALID_VALUE, "Invalid width value."));
+        return false;
+    }
+
+    return true;
+}
+
 }  // namespace gl
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/validationES2.h
+++ b/gfx/angle/src/libANGLE/validationES2.h
@@ -345,17 +345,17 @@ bool ValidateBufferData(ValidationContex
                         const GLvoid *data,
                         GLenum usage);
 bool ValidateBufferSubData(ValidationContext *context,
                            GLenum target,
                            GLintptr offset,
                            GLsizeiptr size,
                            const GLvoid *data);
 
-bool ValidateEnableExtensionANGLE(ValidationContext *context, const GLchar *name);
+bool ValidateRequestExtensionANGLE(ValidationContext *context, const GLchar *name);
 
 bool ValidateActiveTexture(ValidationContext *context, GLenum texture);
 bool ValidateAttachShader(ValidationContext *context, GLuint program, GLuint shader);
 bool ValidateBindAttribLocation(ValidationContext *context,
                                 GLuint program,
                                 GLuint index,
                                 const GLchar *name);
 bool ValidateBindBuffer(ValidationContext *context, GLenum target, GLuint buffer);
@@ -365,11 +365,14 @@ bool ValidateBlendEquation(ValidationCon
 bool ValidateBlendEquationSeparate(ValidationContext *context, GLenum modeRGB, GLenum modeAlpha);
 bool ValidateBlendFunc(ValidationContext *context, GLenum sfactor, GLenum dfactor);
 bool ValidateBlendFuncSeparate(ValidationContext *context,
                                GLenum srcRGB,
                                GLenum dstRGB,
                                GLenum srcAlpha,
                                GLenum dstAlpha);
 
+bool ValidateGetString(Context *context, GLenum name);
+bool ValidateLineWidth(ValidationContext *context, GLfloat width);
+
 }  // namespace gl
 
 #endif // LIBANGLE_VALIDATION_ES2_H_
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/validationES3.cpp
+++ b/gfx/angle/src/libANGLE/validationES3.cpp
@@ -19,17 +19,20 @@
 #include "libANGLE/formatutils.h"
 #include "libANGLE/FramebufferAttachment.h"
 
 using namespace angle;
 
 namespace gl
 {
 
-static bool ValidateTexImageFormatCombination(gl::Context *context, GLenum internalFormat, GLenum format, GLenum type)
+static bool ValidateTexImageFormatCombination(gl::Context *context,
+                                              GLenum internalFormat,
+                                              GLenum format,
+                                              GLenum type)
 {
     // For historical reasons, glTexImage2D and glTexImage3D pass in their internal format as a
     // GLint instead of a GLenum. Therefor an invalid internal format gives a GL_INVALID_VALUE
     // error instead of a GL_INVALID_ENUM error. As this validation function is only called in
     // the validation codepaths for glTexImage2D/3D, we record a GL_INVALID_VALUE error.
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalFormat);
     if (!formatInfo.textureSupport(context->getClientVersion(), context->getExtensions()))
     {
@@ -94,70 +97,71 @@ bool ValidateES3TexImageParametersBase(C
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
 
     const gl::Caps &caps = context->getCaps();
 
     switch (target)
     {
-      case GL_TEXTURE_2D:
-        if (static_cast<GLuint>(width) > (caps.max2DTextureSize >> level) ||
-            static_cast<GLuint>(height) > (caps.max2DTextureSize >> level))
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
-            return false;
-        }
-        break;
+        case GL_TEXTURE_2D:
+            if (static_cast<GLuint>(width) > (caps.max2DTextureSize >> level) ||
+                static_cast<GLuint>(height) > (caps.max2DTextureSize >> level))
+            {
+                context->handleError(Error(GL_INVALID_VALUE));
+                return false;
+            }
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+            if (!isSubImage && width != height)
+            {
+                context->handleError(Error(GL_INVALID_VALUE));
+                return false;
+            }
 
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
-      case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
-      case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
-        if (!isSubImage && width != height)
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
-            return false;
-        }
+            if (static_cast<GLuint>(width) > (caps.maxCubeMapTextureSize >> level))
+            {
+                context->handleError(Error(GL_INVALID_VALUE));
+                return false;
+            }
+            break;
 
-        if (static_cast<GLuint>(width) > (caps.maxCubeMapTextureSize >> level))
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
+        case GL_TEXTURE_3D:
+            if (static_cast<GLuint>(width) > (caps.max3DTextureSize >> level) ||
+                static_cast<GLuint>(height) > (caps.max3DTextureSize >> level) ||
+                static_cast<GLuint>(depth) > (caps.max3DTextureSize >> level))
+            {
+                context->handleError(Error(GL_INVALID_VALUE));
+                return false;
+            }
+            break;
+
+        case GL_TEXTURE_2D_ARRAY:
+            if (static_cast<GLuint>(width) > (caps.max2DTextureSize >> level) ||
+                static_cast<GLuint>(height) > (caps.max2DTextureSize >> level) ||
+                static_cast<GLuint>(depth) > caps.maxArrayTextureLayers)
+            {
+                context->handleError(Error(GL_INVALID_VALUE));
+                return false;
+            }
+            break;
+
+        default:
+            context->handleError(Error(GL_INVALID_ENUM));
             return false;
-        }
-        break;
-
-      case GL_TEXTURE_3D:
-        if (static_cast<GLuint>(width) > (caps.max3DTextureSize >> level) ||
-            static_cast<GLuint>(height) > (caps.max3DTextureSize >> level) ||
-            static_cast<GLuint>(depth) > (caps.max3DTextureSize >> level))
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
-            return false;
-        }
-        break;
-
-      case GL_TEXTURE_2D_ARRAY:
-        if (static_cast<GLuint>(width) > (caps.max2DTextureSize >> level) ||
-            static_cast<GLuint>(height) > (caps.max2DTextureSize >> level) ||
-            static_cast<GLuint>(depth) > caps.maxArrayTextureLayers)
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
-            return false;
-        }
-        break;
-
-      default:
-          context->handleError(Error(GL_INVALID_ENUM));
-        return false;
     }
 
-    gl::Texture *texture = context->getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
+    gl::Texture *texture =
+        context->getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
     if (!texture)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     if (texture->getImmutableFormat() && !isSubImage)
     {
@@ -258,17 +262,18 @@ bool ValidateES3TexImageParametersBase(C
     {
         return false;
     }
 
     // Check for pixel unpack buffer related API errors
     gl::Buffer *pixelUnpackBuffer = context->getGLState().getTargetBuffer(GL_PIXEL_UNPACK_BUFFER);
     if (pixelUnpackBuffer != nullptr)
     {
-        // ...data is not evenly divisible into the number of bytes needed to store in memory a datum
+        // ...data is not evenly divisible into the number of bytes needed to store in memory a
+        // datum
         // indicated by type.
         if (!isCompressed)
         {
             size_t offset            = reinterpret_cast<size_t>(pixels);
             size_t dataBytesPerPixel = static_cast<size_t>(gl::GetTypeInfo(type).bytes);
 
             if ((offset % dataBytesPerPixel) != 0)
             {
@@ -437,17 +442,18 @@ bool GetUnsizedEffectiveInternalFormatIn
         { GL_RGBA8,                  GL_RGBA,            5,    8, 5,    8, 5,    8, 5,    8 },
     };
     // clang-format on
 
     return QueryEffectiveFormatList(srcFormat, destFormat.format, list, ArraySize(list),
                                     outEffectiveFormat);
 }
 
-static bool GetEffectiveInternalFormat(const InternalFormat &srcFormat, const InternalFormat &destFormat,
+static bool GetEffectiveInternalFormat(const InternalFormat &srcFormat,
+                                       const InternalFormat &destFormat,
                                        GLenum *outEffectiveFormat)
 {
     if (destFormat.pixelBytes > 0)
     {
         return GetSizedEffectiveInternalFormatInfo(srcFormat, outEffectiveFormat);
     }
     else
     {
@@ -733,70 +739,70 @@ bool ValidateES3TexStorageParametersBase
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     const gl::Caps &caps = context->getCaps();
 
     switch (target)
     {
-      case GL_TEXTURE_2D:
+        case GL_TEXTURE_2D:
         {
             if (static_cast<GLuint>(width) > caps.max2DTextureSize ||
                 static_cast<GLuint>(height) > caps.max2DTextureSize)
             {
                 context->handleError(Error(GL_INVALID_VALUE));
                 return false;
             }
         }
         break;
 
-      case GL_TEXTURE_CUBE_MAP:
+        case GL_TEXTURE_CUBE_MAP:
         {
             if (width != height)
             {
                 context->handleError(Error(GL_INVALID_VALUE));
                 return false;
             }
 
             if (static_cast<GLuint>(width) > caps.maxCubeMapTextureSize)
             {
                 context->handleError(Error(GL_INVALID_VALUE));
                 return false;
             }
         }
         break;
 
-      case GL_TEXTURE_3D:
+        case GL_TEXTURE_3D:
         {
             if (static_cast<GLuint>(width) > caps.max3DTextureSize ||
                 static_cast<GLuint>(height) > caps.max3DTextureSize ||
                 static_cast<GLuint>(depth) > caps.max3DTextureSize)
             {
                 context->handleError(Error(GL_INVALID_VALUE));
                 return false;
             }
         }
         break;
 
-      case GL_TEXTURE_2D_ARRAY:
+        case GL_TEXTURE_2D_ARRAY:
         {
             if (static_cast<GLuint>(width) > caps.max2DTextureSize ||
                 static_cast<GLuint>(height) > caps.max2DTextureSize ||
                 static_cast<GLuint>(depth) > caps.maxArrayTextureLayers)
             {
                 context->handleError(Error(GL_INVALID_VALUE));
                 return false;
             }
         }
         break;
 
-      default:
-          UNREACHABLE();
-        return false;
+        default:
+            UNREACHABLE();
+            return false;
     }
 
     gl::Texture *texture = context->getTargetTexture(target);
     if (!texture || texture->id() == 0)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
@@ -898,18 +904,22 @@ bool ValidateGetQueryObjectuiv(Context *
     {
         context->handleError(Error(GL_INVALID_OPERATION, "GLES version < 3.0"));
         return false;
     }
 
     return ValidateGetQueryObjectValueBase(context, id, pname, nullptr);
 }
 
-bool ValidateFramebufferTextureLayer(Context *context, GLenum target, GLenum attachment,
-                                     GLuint texture, GLint level, GLint layer)
+bool ValidateFramebufferTextureLayer(Context *context,
+                                     GLenum target,
+                                     GLenum attachment,
+                                     GLuint texture,
+                                     GLint level,
+                                     GLint layer)
 {
     if (context->getClientMajorVersion() < 3)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     if (layer < 0)
@@ -926,75 +936,82 @@ bool ValidateFramebufferTextureLayer(Con
     const gl::Caps &caps = context->getCaps();
     if (texture != 0)
     {
         gl::Texture *tex = context->getTexture(texture);
         ASSERT(tex);
 
         switch (tex->getTarget())
         {
-          case GL_TEXTURE_2D_ARRAY:
+            case GL_TEXTURE_2D_ARRAY:
             {
                 if (level > gl::log2(caps.max2DTextureSize))
                 {
                     context->handleError(Error(GL_INVALID_VALUE));
                     return false;
                 }
 
                 if (static_cast<GLuint>(layer) >= caps.maxArrayTextureLayers)
                 {
                     context->handleError(Error(GL_INVALID_VALUE));
                     return false;
                 }
             }
             break;
 
-          case GL_TEXTURE_3D:
+            case GL_TEXTURE_3D:
             {
                 if (level > gl::log2(caps.max3DTextureSize))
                 {
                     context->handleError(Error(GL_INVALID_VALUE));
                     return false;
                 }
 
                 if (static_cast<GLuint>(layer) >= caps.max3DTextureSize)
                 {
                     context->handleError(Error(GL_INVALID_VALUE));
                     return false;
                 }
             }
             break;
 
-          default:
-              context->handleError(Error(GL_INVALID_OPERATION));
-            return false;
+            default:
+                context->handleError(Error(GL_INVALID_OPERATION));
+                return false;
         }
 
         const auto &format = tex->getFormat(tex->getTarget(), level);
         if (format.info->compressed)
         {
             context->handleError(Error(GL_INVALID_OPERATION));
             return false;
         }
     }
 
     return true;
 }
 
-bool ValidateES3RenderbufferStorageParameters(gl::Context *context, GLenum target, GLsizei samples,
-                                              GLenum internalformat, GLsizei width, GLsizei height)
+bool ValidateES3RenderbufferStorageParameters(gl::Context *context,
+                                              GLenum target,
+                                              GLsizei samples,
+                                              GLenum internalformat,
+                                              GLsizei width,
+                                              GLsizei height)
 {
-    if (!ValidateRenderbufferStorageParametersBase(context, target, samples, internalformat, width, height))
+    if (!ValidateRenderbufferStorageParametersBase(context, target, samples, internalformat, width,
+                                                   height))
     {
         return false;
     }
 
-    //The ES3 spec(section 4.4.2) states that the internal format must be sized and not an integer format if samples is greater than zero.
+    // The ES3 spec(section 4.4.2) states that the internal format must be sized and not an integer
+    // format if samples is greater than zero.
     const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalformat);
-    if ((formatInfo.componentType == GL_UNSIGNED_INT || formatInfo.componentType == GL_INT) && samples > 0)
+    if ((formatInfo.componentType == GL_UNSIGNED_INT || formatInfo.componentType == GL_INT) &&
+        samples > 0)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     // The behavior is different than the ANGLE version, which would generate a GL_OUT_OF_MEMORY.
     const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
     if (static_cast<GLuint>(samples) > formatCaps.getMaxSamples())
@@ -1003,43 +1020,46 @@ bool ValidateES3RenderbufferStorageParam
             Error(GL_INVALID_OPERATION,
                   "Samples must not be greater than maximum supported value for the format."));
         return false;
     }
 
     return true;
 }
 
-bool ValidateInvalidateFramebuffer(Context *context, GLenum target, GLsizei numAttachments,
+bool ValidateInvalidateFramebuffer(Context *context,
+                                   GLenum target,
+                                   GLsizei numAttachments,
                                    const GLenum *attachments)
 {
     if (context->getClientMajorVersion() < 3)
     {
         context->handleError(
             Error(GL_INVALID_OPERATION, "Operation only supported on ES 3.0 and above"));
         return false;
     }
 
     bool defaultFramebuffer = false;
 
     switch (target)
     {
-      case GL_DRAW_FRAMEBUFFER:
-      case GL_FRAMEBUFFER:
-          defaultFramebuffer = context->getGLState().getDrawFramebuffer()->id() == 0;
-          break;
-      case GL_READ_FRAMEBUFFER:
-          defaultFramebuffer = context->getGLState().getReadFramebuffer()->id() == 0;
-          break;
-      default:
-          context->handleError(Error(GL_INVALID_ENUM, "Invalid framebuffer target"));
-        return false;
+        case GL_DRAW_FRAMEBUFFER:
+        case GL_FRAMEBUFFER:
+            defaultFramebuffer = context->getGLState().getDrawFramebuffer()->id() == 0;
+            break;
+        case GL_READ_FRAMEBUFFER:
+            defaultFramebuffer = context->getGLState().getReadFramebuffer()->id() == 0;
+            break;
+        default:
+            context->handleError(Error(GL_INVALID_ENUM, "Invalid framebuffer target"));
+            return false;
     }
 
-    return ValidateDiscardFramebufferBase(context, target, numAttachments, attachments, defaultFramebuffer);
+    return ValidateDiscardFramebufferBase(context, target, numAttachments, attachments,
+                                          defaultFramebuffer);
 }
 
 bool ValidateClearBuffer(ValidationContext *context)
 {
     if (context->getClientMajorVersion() < 3)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
@@ -1086,17 +1106,17 @@ bool ValidateDrawRangeElements(Context *
         // GL spec says that behavior in this case is undefined - generating an error is fine.
         context->handleError(
             Error(GL_INVALID_OPERATION, "Indices are out of the start, end range."));
         return false;
     }
     return true;
 }
 
-bool ValidateGetUniformuiv(Context *context, GLuint program, GLint location, GLuint* params)
+bool ValidateGetUniformuiv(Context *context, GLuint program, GLint location, GLuint *params)
 {
     if (context->getClientMajorVersion() < 3)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     return ValidateGetUniformBase(context, program, location);
@@ -1128,17 +1148,18 @@ bool ValidateReadBuffer(Context *context
         context->handleError(gl::Error(GL_INVALID_ENUM, "Unknown enum for 'src' in ReadBuffer"));
         return false;
     }
 
     if (readFBO->id() == 0)
     {
         if (src != GL_BACK)
         {
-            const char *errorMsg = "'src' must be GL_NONE or GL_BACK when reading from the default framebuffer.";
+            const char *errorMsg =
+                "'src' must be GL_NONE or GL_BACK when reading from the default framebuffer.";
             context->handleError(gl::Error(GL_INVALID_OPERATION, errorMsg));
             return false;
         }
     }
     else
     {
         GLuint drawBuffer = static_cast<GLuint>(src - GL_COLOR_ATTACHMENT0);
 
@@ -1186,17 +1207,17 @@ bool ValidateCompressedTexImage3D(Contex
     const InternalFormat &formatInfo = GetInternalFormatInfo(internalformat);
     if (!formatInfo.compressed)
     {
         context->handleError(Error(GL_INVALID_ENUM, "Not a valid compressed texture format"));
         return false;
     }
 
     auto blockSizeOrErr =
-        formatInfo.computeCompressedImageSize(gl::Extents(width, height, depth));
+        formatInfo.computeCompressedImageSize(GL_UNSIGNED_BYTE, gl::Extents(width, height, depth));
     if (blockSizeOrErr.isError())
     {
         context->handleError(Error(GL_INVALID_VALUE));
         return false;
     }
     if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSizeOrErr.getResult())
     {
         context->handleError(Error(GL_INVALID_VALUE));
@@ -1595,17 +1616,17 @@ bool ValidateCompressedTexSubImage3D(Con
     if (context->getClientMajorVersion() < 3)
     {
         context->handleError(Error(GL_INVALID_OPERATION));
         return false;
     }
 
     const InternalFormat &formatInfo = GetInternalFormatInfo(format);
     auto blockSizeOrErr =
-        formatInfo.computeCompressedImageSize(gl::Extents(width, height, depth));
+        formatInfo.computeCompressedImageSize(GL_UNSIGNED_BYTE, gl::Extents(width, height, depth));
     if (blockSizeOrErr.isError())
     {
         context->handleError(blockSizeOrErr.getError());
         return false;
     }
     if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSizeOrErr.getResult())
     {
         context->handleError(Error(GL_INVALID_VALUE));
@@ -2030,9 +2051,52 @@ bool ValidateCopyBufferSubData(Validatio
             context->handleError(Error(GL_INVALID_VALUE));
             return false;
         }
     }
 
     return true;
 }
 
+bool ValidateGetStringi(Context *context, GLenum name, GLuint index)
+{
+    if (context->getClientMajorVersion() < 3)
+    {
+        context->handleError(
+            Error(GL_INVALID_OPERATION, "glGetStringi requires OpenGL ES 3.0 or higher."));
+        return false;
+    }
+
+    switch (name)
+    {
+        case GL_EXTENSIONS:
+            if (index >= context->getExtensionStringCount())
+            {
+                context->handleError(Error(
+                    GL_INVALID_VALUE, "index must be less than the number of extension strings."));
+                return false;
+            }
+            break;
+
+        case GL_REQUESTABLE_EXTENSIONS_ANGLE:
+            if (!context->getExtensions().requestExtension)
+            {
+                context->handleError(Error(GL_INVALID_ENUM, "Invalid name."));
+                return false;
+            }
+            if (index >= context->getRequestableExtensionStringCount())
+            {
+                context->handleError(
+                    Error(GL_INVALID_VALUE,
+                          "index must be less than the number of requestable extension strings."));
+                return false;
+            }
+            break;
+
+        default:
+            context->handleError(Error(GL_INVALID_ENUM, "Invalid name."));
+            return false;
+    }
+
+    return true;
+}
+
 }  // namespace gl
old mode 100755
new mode 100644
--- a/gfx/angle/src/libANGLE/validationES3.h
+++ b/gfx/angle/src/libANGLE/validationES3.h
@@ -359,11 +359,13 @@ bool ValidateGetInteger64i_vRobustANGLE(
 
 bool ValidateCopyBufferSubData(ValidationContext *context,
                                GLenum readTarget,
                                GLenum writeTarget,
                                GLintptr readOffset,
                                GLintptr writeOffset,
                                GLsizeiptr size);
 
+bool ValidateGetStringi(Context *context, GLenum name, GLuint index);
+
 }  // namespace gl
 
 #endif // LIBANGLE_VALIDATION_ES3_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libEGL/moz.build
+++ b/gfx/angle/src/libEGL/moz.build
@@ -27,16 +27,19 @@ if CONFIG['GNU_CXX']:
             '-Wno-unused-private-field',
         ]
     else:
         CXXFLAGS += [
             '-Wno-shadow-compatible-local',
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
 if not CONFIG['MOZ_DEBUG']:
     DEFINES['_SECURE_SCL'] = 0
 
 DEFINES['ANGLE_ENABLE_D3D9'] = True
 DEFINES['ANGLE_SKIP_DXGI_1_2_CHECK'] = True
@@ -59,16 +62,21 @@ USE_LIBS += [ 'libGLESv2' ]
 DEFINES['LIBANGLE_IMPLEMENTATION'] = "1"
 DEFINES['ANGLE_ENABLE_HLSL'] = "1"
 DEFINES['ANGLE_ENABLE_GLSL'] = "1"
 DEFINES['ANGLE_ENABLE_ESSL'] = "1"
 DEFINES['ANGLE_ENABLE_KEYEDMUTEX'] = "1"
 
 if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
   OS_LIBS += [ 'd3d9', 'dxguid' ]
+else:
+  EXTRA_DSO_LDOPTS += [
+    '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+    '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+  ]
 
 
 GeckoSharedLibrary('libEGL', linkage=None)
 
 RCFILE = SRCDIR + '/libEGL.rc'
 DEFFILE = SRCDIR + '/libEGL.def'
 
 USE_LIBS += ['libANGLE']
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2.gypi
+++ b/gfx/angle/src/libGLESv2.gypi
@@ -29,16 +29,17 @@
             'common/third_party/numerics/base/numerics/safe_conversions.h',
             'common/third_party/numerics/base/numerics/safe_conversions_impl.h',
             'common/third_party/numerics/base/numerics/safe_math.h',
             'common/third_party/numerics/base/numerics/safe_math_impl.h',
             'common/tls.cpp',
             'common/tls.h',
             'common/utilities.cpp',
             'common/utilities.h',
+            'common/vector_utils.h',
             'common/version.h',
         ],
         'libangle_image_util_sources':
         [
             'image_util/copyimage.cpp',
             'image_util/copyimage.h',
             'image_util/copyimage.inl',
             'image_util/generatemip.h',
@@ -146,16 +147,18 @@
             'libANGLE/Uniform.h',
             'libANGLE/Version.h',
             'libANGLE/Version.inl',
             'libANGLE/VertexArray.cpp',
             'libANGLE/VertexArray.h',
             'libANGLE/VertexAttribute.cpp',
             'libANGLE/VertexAttribute.h',
             'libANGLE/VertexAttribute.inl',
+            'libANGLE/WorkerThread.cpp',
+            'libANGLE/WorkerThread.h',
             'libANGLE/angletypes.cpp',
             'libANGLE/angletypes.h',
             'libANGLE/angletypes.inl',
             'libANGLE/es3_copy_conversion_table_autogen.cpp',
             'libANGLE/features.h',
             'libANGLE/format_map_autogen.cpp',
             'libANGLE/formatutils.cpp',
             'libANGLE/formatutils.h',
@@ -257,24 +260,28 @@
             'libANGLE/renderer/d3d/ShaderExecutableD3D.h',
             'libANGLE/renderer/d3d/SurfaceD3D.cpp',
             'libANGLE/renderer/d3d/SurfaceD3D.h',
             'libANGLE/renderer/d3d/SwapChainD3D.cpp',
             'libANGLE/renderer/d3d/SwapChainD3D.h',
             'libANGLE/renderer/d3d/TextureD3D.cpp',
             'libANGLE/renderer/d3d/TextureD3D.h',
             'libANGLE/renderer/d3d/TextureStorage.h',
-            'libANGLE/renderer/d3d/VaryingPacking.cpp',
-            'libANGLE/renderer/d3d/VaryingPacking.h',
             'libANGLE/renderer/d3d/VertexBuffer.cpp',
             'libANGLE/renderer/d3d/VertexBuffer.h',
             'libANGLE/renderer/d3d/VertexDataManager.cpp',
             'libANGLE/renderer/d3d/VertexDataManager.h',
             'libANGLE/renderer/d3d/WorkaroundsD3D.h',
         ],
+        'libangle_d3d_hlsl_sources':
+        [
+            'libANGLE/renderer/d3d/hlsl/VaryingPacking.cpp',
+            'libANGLE/renderer/d3d/hlsl/VaryingPacking.h',
+            'libANGLE/renderer/d3d/hlsl/hlsl_utils.h',
+        ],
         'libangle_d3d9_sources':
         [
             'libANGLE/renderer/d3d/d3d9/Blit9.cpp',
             'libANGLE/renderer/d3d/d3d9/Blit9.h',
             'libANGLE/renderer/d3d/d3d9/Buffer9.cpp',
             'libANGLE/renderer/d3d/d3d9/Buffer9.h',
             'libANGLE/renderer/d3d/d3d9/Context9.cpp',
             'libANGLE/renderer/d3d/d3d9/Context9.h',
@@ -299,18 +306,21 @@
             'libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp',
             'libANGLE/renderer/d3d/d3d9/renderer9_utils.h',
             'libANGLE/renderer/d3d/d3d9/RenderTarget9.cpp',
             'libANGLE/renderer/d3d/d3d9/RenderTarget9.h',
             'libANGLE/renderer/d3d/d3d9/ShaderCache.h',
             'libANGLE/renderer/d3d/d3d9/ShaderExecutable9.cpp',
             'libANGLE/renderer/d3d/d3d9/ShaderExecutable9.h',
             'libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskps.h',
-            'libANGLE/renderer/d3d/d3d9/shaders/compiled/flipyvs.h',
+            'libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskpremultps.h',
+            'libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskunmultps.h',
             'libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceps.h',
+            'libANGLE/renderer/d3d/d3d9/shaders/compiled/luminancepremultps.h',
+            'libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceunmultps.h',
             'libANGLE/renderer/d3d/d3d9/shaders/compiled/passthroughps.h',
             'libANGLE/renderer/d3d/d3d9/shaders/compiled/standardvs.h',
             'libANGLE/renderer/d3d/d3d9/StateManager9.cpp',
             'libANGLE/renderer/d3d/d3d9/StateManager9.h',
             'libANGLE/renderer/d3d/d3d9/SwapChain9.cpp',
             'libANGLE/renderer/d3d/d3d9/SwapChain9.h',
             'libANGLE/renderer/d3d/d3d9/TextureStorage9.cpp',
             'libANGLE/renderer/d3d/d3d9/TextureStorage9.h',
@@ -800,24 +810,32 @@
                     }],
                     ['angle_enable_vulkan==1',
                     {
                         'defines':
                         [
                             'ANGLE_ENABLE_VULKAN',
                         ],
                     }],
+                    ['angle_enable_null==1',
+                    {
+                        'defines':
+                        [
+                            'ANGLE_ENABLE_NULL',
+                        ],
+                    }],
                 ],
             },
             'conditions':
             [
                 ['angle_enable_d3d9==1 or angle_enable_d3d11==1',
                 {
                     'sources':
                     [
+                        '<@(libangle_d3d_hlsl_sources)',
                         '<@(libangle_d3d_shared_sources)',
                     ],
                 }],
                 ['angle_enable_d3d9==1',
                 {
                     'sources':
                     [
                         '<@(libangle_d3d9_sources)',
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2/entry_points_egl.cpp
+++ b/gfx/angle/src/libGLESv2/entry_points_egl.cpp
@@ -1530,18 +1530,18 @@ EGLBoolean EGLAPIENTRY WaitSync(EGLDispl
 
         // GL_CHROMIUM_copy_texture
         INSERT_PROC_ADDRESS(gl, CopyTextureCHROMIUM);
         INSERT_PROC_ADDRESS(gl, CopySubTextureCHROMIUM);
 
         // GL_CHROMIUM_copy_compressed_texture
         INSERT_PROC_ADDRESS(gl, CompressedCopyTextureCHROMIUM);
 
-        // GL_ANGLE_webgl_compatibility
-        INSERT_PROC_ADDRESS(gl, EnableExtensionANGLE);
+        // GL_ANGLE_request_extension
+        INSERT_PROC_ADDRESS(gl, RequestExtensionANGLE);
 
         // GL_ANGLE_robust_client_memory
         INSERT_PROC_ADDRESS(gl, GetBooleanvRobustANGLE);
         INSERT_PROC_ADDRESS(gl, GetBufferParameterivRobustANGLE);
         INSERT_PROC_ADDRESS(gl, GetFloatvRobustANGLE);
         INSERT_PROC_ADDRESS(gl, GetFramebufferAttachmentParameterivRobustANGLE);
         INSERT_PROC_ADDRESS(gl, GetIntegervRobustANGLE);
         INSERT_PROC_ADDRESS(gl, GetProgramivRobustANGLE);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2/entry_points_gles_2_0.cpp
+++ b/gfx/angle/src/libGLESv2/entry_points_gles_2_0.cpp
@@ -27,17 +27,16 @@
 #include "libANGLE/validationES.h"
 #include "libANGLE/validationES2.h"
 #include "libANGLE/validationES3.h"
 #include "libANGLE/queryconversions.h"
 #include "libANGLE/queryutils.h"
 
 #include "common/debug.h"
 #include "common/utilities.h"
-#include "common/version.h"
 
 namespace gl
 {
 
 void GL_APIENTRY ActiveTexture(GLenum texture)
 {
     EVENT("(GLenum texture = 0x%X)", texture);
 
@@ -1460,55 +1459,22 @@ void GL_APIENTRY GetShaderSource(GLuint 
 const GLubyte *GL_APIENTRY GetString(GLenum name)
 {
     EVENT("(GLenum name = 0x%X)", name);
 
     Context *context = GetValidGlobalContext();
 
     if (context)
     {
-        switch (name)
+        if (!context->skipValidation() && !ValidateGetString(context, name))
         {
-            case GL_VENDOR:
-                return reinterpret_cast<const GLubyte *>("Google Inc.");
-
-            case GL_RENDERER:
-                return reinterpret_cast<const GLubyte *>(context->getRendererString());
-
-            case GL_VERSION:
-                if (context->getClientMajorVersion() == 2)
-                {
-                    return reinterpret_cast<const GLubyte *>(
-                        "OpenGL ES 2.0 (ANGLE " ANGLE_VERSION_STRING ")");
-                }
-                else
-                {
-                    return reinterpret_cast<const GLubyte *>(
-                        "OpenGL ES 3.0 (ANGLE " ANGLE_VERSION_STRING ")");
-                }
-
-            case GL_SHADING_LANGUAGE_VERSION:
-                if (context->getClientMajorVersion() == 2)
-                {
-                    return reinterpret_cast<const GLubyte *>(
-                        "OpenGL ES GLSL ES 1.00 (ANGLE " ANGLE_VERSION_STRING ")");
-                }
-                else
-                {
-                    return reinterpret_cast<const GLubyte *>(
-                        "OpenGL ES GLSL ES 3.00 (ANGLE " ANGLE_VERSION_STRING ")");
-                }
-
-            case GL_EXTENSIONS:
-                return reinterpret_cast<const GLubyte *>(context->getExtensionString());
-
-            default:
-                context->handleError(Error(GL_INVALID_ENUM));
             return nullptr;
         }
+
+        return context->getString(name);
     }
 
     return nullptr;
 }
 
 void GL_APIENTRY GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
 {
     EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLfloat* params = 0x%0.8p)", target, pname, params);
@@ -1835,19 +1801,18 @@ GLboolean GL_APIENTRY IsTexture(GLuint t
 
 void GL_APIENTRY LineWidth(GLfloat width)
 {
     EVENT("(GLfloat width = %f)", width);
 
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (width <= 0.0f)
+        if (!context->skipValidation() && !ValidateLineWidth(context, width))
         {
-            context->handleError(Error(GL_INVALID_VALUE));
             return;
         }
 
         context->lineWidth(width);
     }
 }
 
 void GL_APIENTRY LinkProgram(GLuint program)
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
+++ b/gfx/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
@@ -1947,32 +1947,30 @@ ANGLE_EXPORT void GL_APIENTRY Compressed
         {
             return;
         }
 
         context->compressedCopyTextureCHROMIUM(sourceId, destId);
     }
 }
 
-GL_APICALL GLboolean GL_APIENTRY EnableExtensionANGLE(const GLchar *name)
+GL_APICALL void GL_APIENTRY RequestExtensionANGLE(const GLchar *name)
 {
     EVENT("(const GLchar *name = %p)", name);
 
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation() && !ValidateEnableExtensionANGLE(context, name))
+        if (!context->skipValidation() && !ValidateRequestExtensionANGLE(context, name))
         {
-            return GL_FALSE;
+            return;
         }
 
-        return context->enableExtension(name) ? GL_TRUE : GL_FALSE;
+        context->requestExtension(name);
     }
-
-    return GL_FALSE;
 }
 
 ANGLE_EXPORT void GL_APIENTRY GetBooleanvRobustANGLE(GLenum pname,
                                                      GLsizei bufSize,
                                                      GLsizei *length,
                                                      GLboolean *params)
 {
     EVENT(
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2/entry_points_gles_2_0_ext.h
+++ b/gfx/angle/src/libGLESv2/entry_points_gles_2_0_ext.h
@@ -257,18 +257,18 @@ ANGLE_EXPORT void GL_APIENTRY CopySubTex
                                                      GLsizei height,
                                                      GLboolean unpackFlipY,
                                                      GLboolean unpackPremultiplyAlpha,
                                                      GLboolean unpackUnmultiplyAlpha);
 
 // GL_CHROMIUM_copy_compressed_texture
 ANGLE_EXPORT void GL_APIENTRY CompressedCopyTextureCHROMIUM(GLuint sourceId, GLuint destId);
 
-// GL_ANGLE_webgl_compatibility
-GL_APICALL GLboolean GL_APIENTRY EnableExtensionANGLE(const GLchar *name);
+// GL_ANGLE_request_extension
+GL_APICALL void GL_APIENTRY RequestExtensionANGLE(const GLchar *name);
 
 // GL_ANGLE_robust_client_memory
 ANGLE_EXPORT void GL_APIENTRY GetBooleanvRobustANGLE(GLenum pname,
                                                      GLsizei bufSize,
                                                      GLsizei *length,
                                                      GLboolean *data);
 ANGLE_EXPORT void GL_APIENTRY GetBufferParameterivRobustANGLE(GLenum target,
                                                               GLenum pname,
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2/entry_points_gles_3_0.cpp
+++ b/gfx/angle/src/libGLESv2/entry_points_gles_3_0.cpp
@@ -834,16 +834,36 @@ void GL_APIENTRY BindBufferBase(GLenum t
           case GL_UNIFORM_BUFFER:
             if (index >= caps.maxUniformBufferBindings)
             {
                 context->handleError(Error(GL_INVALID_VALUE));
                 return;
             }
             break;
 
+          case GL_ATOMIC_COUNTER_BUFFER:
+              if (index >= caps.maxAtomicCounterBufferBindings)
+              {
+                  context->handleError(Error(
+                      GL_INVALID_VALUE,
+                      "Binding index must be less than GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS."));
+                  return;
+              }
+              break;
+
+          case GL_SHADER_STORAGE_BUFFER:
+              if (index >= caps.maxShaderStorageBufferBindings)
+              {
+                  context->handleError(Error(
+                      GL_INVALID_VALUE,
+                      "Binding index must be less than GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS."));
+                  return;
+              }
+              break;
+
           default:
               context->handleError(Error(GL_INVALID_ENUM));
             return;
         }
 
         if (!context->getGLState().isBindGeneratesResourceEnabled() &&
             !context->isBufferGenerated(buffer))
         {
@@ -868,16 +888,32 @@ void GL_APIENTRY BindBufferBase(GLenum t
                 context->bindGenericTransformFeedbackBuffer(buffer);
                 break;
             }
           case GL_UNIFORM_BUFFER:
             context->bindIndexedUniformBuffer(buffer, index, 0, 0);
             context->bindGenericUniformBuffer(buffer);
             break;
 
+          case GL_ATOMIC_COUNTER_BUFFER:
+              if (buffer != 0)
+              {
+                  // Binding buffers to this binding point is not implemented yet.
+                  UNIMPLEMENTED();
+              }
+              break;
+
+          case GL_SHADER_STORAGE_BUFFER:
+              if (buffer != 0)
+              {
+                  // Binding buffers to this binding point is not implemented yet.
+                  UNIMPLEMENTED();
+              }
+              break;
+
           default:
             UNREACHABLE();
         }
     }
 }
 
 void GL_APIENTRY TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode)
 {
@@ -1386,38 +1422,25 @@ void GL_APIENTRY ClearBufferfi(GLenum bu
 
 const GLubyte *GL_APIENTRY GetStringi(GLenum name, GLuint index)
 {
     EVENT("(GLenum name = 0x%X, GLuint index = %u)", name, index);
 
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (context->getClientMajorVersion() < 3)
+        if (!context->skipValidation() && !ValidateGetStringi(context, name, index))
         {
-            context->handleError(Error(GL_INVALID_OPERATION));
-            return NULL;
-        }
-
-        if (name != GL_EXTENSIONS)
-        {
-            context->handleError(Error(GL_INVALID_ENUM));
-            return NULL;
+            return nullptr;
         }
 
-        if (index >= context->getExtensionStringCount())
-        {
-            context->handleError(Error(GL_INVALID_VALUE));
-            return NULL;
-        }
-
-        return reinterpret_cast<const GLubyte *>(context->getExtensionString(index));
+        return context->getStringi(name, index);
     }
 
-    return NULL;
+    return nullptr;
 }
 
 void GL_APIENTRY CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
 {
     EVENT("(GLenum readTarget = 0x%X, GLenum writeTarget = 0x%X, GLintptr readOffset = %d, GLintptr writeOffset = %d, GLsizeiptr size = %d)",
           readTarget, writeTarget, readOffset, writeOffset, size);
 
     Context *context = GetValidGlobalContext();
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2/entry_points_gles_3_1.cpp
+++ b/gfx/angle/src/libGLESv2/entry_points_gles_3_1.cpp
@@ -7,16 +7,17 @@
 // entry_points_gles_3_1.cpp : Implements the GLES 3.1 Entry point.
 
 #include "libGLESv2/entry_points_gles_3_1.h"
 #include "libGLESv2/global_state.h"
 
 #include "libANGLE/Context.h"
 #include "libANGLE/Error.h"
 
+#include "libANGLE/validationES.h"
 #include "libANGLE/validationES31.h"
 
 #include "common/debug.h"
 
 namespace gl
 {
 
 void GL_APIENTRY DispatchCompute(GLuint numGroupsX, GLuint numGroupsY, GLuint numGroupsZ)
@@ -254,21 +255,21 @@ GLuint GL_APIENTRY CreateShaderProgramv(
 }
 
 void GL_APIENTRY BindProgramPipeline(GLuint pipeline)
 {
     EVENT("(GLuint pipeline = %u)", pipeline);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (pipeline != 0)
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            // Binding non-zero pipelines is not implemented yet.
+            UNIMPLEMENTED();
         }
-        UNIMPLEMENTED();
     }
 }
 
 void GL_APIENTRY DeleteProgramPipelines(GLsizei n, const GLuint *pipelines)
 {
     EVENT("(GLsizei n = %d, const GLuint* pipelines = 0x%0.8p)", n, pipelines);
     Context *context = GetValidGlobalContext();
     if (context)
@@ -322,631 +323,585 @@ void GL_APIENTRY GetProgramPipelineiv(GL
             context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
         }
         UNIMPLEMENTED();
     }
 }
 
 void GL_APIENTRY ProgramUniform1i(GLuint program, GLint location, GLint v0)
 {
-    EVENT("(GLuint program = %u, GLint location = %d, GLint v0 = %d)", program, location, v0);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    ProgramUniform1iv(program, location, 1, &v0);
 }
 
 void GL_APIENTRY ProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)
 {
-    EVENT("(GLuint program = %u, GLint location = %d, GLint v0 = %d, GLint v1 = %d)", program,
-          location, v0, v1);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLint xy[2] = {v0, v1};
+    ProgramUniform2iv(program, location, 1, xy);
 }
 
 void GL_APIENTRY ProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
 {
-    EVENT("(GLuint program = %u, GLint location = %d, GLint v0 = %d, GLint v1 = %d, GLint v2 = %d)",
-          program, location, v0, v1, v2);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLint xyz[3] = {v0, v1, v2};
+    ProgramUniform3iv(program, location, 1, xyz);
 }
 
 void GL_APIENTRY
 ProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
 {
-    EVENT(
-        "(GLuint program = %u, GLint location = %d, GLint v0 = %d, GLint v1 = %d, GLint v2 = %d, "
-        "GLint v3 = %d)",
-        program, location, v0, v1, v2, v3);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLint xyzw[4] = {v0, v1, v2, v3};
+    ProgramUniform4iv(program, location, 1, xyzw);
 }
 
 void GL_APIENTRY ProgramUniform1ui(GLuint program, GLint location, GLuint v0)
 {
-    EVENT("(GLuint program = %u, GLint location = %d, GLuint v0 = %u)", program, location, v0);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    ProgramUniform1uiv(program, location, 1, &v0);
 }
 
 void GL_APIENTRY ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)
 {
-    EVENT("(GLuint program = %u, GLint location = %d, GLuint v0 = %u, GLuint v1 = %u)", program,
-          location, v0, v1);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLuint xy[2] = {v0, v1};
+    ProgramUniform2uiv(program, location, 1, xy);
 }
 
 void GL_APIENTRY ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
 {
-    EVENT(
-        "(GLuint program = %u, GLint location = %d, GLuint v0 = %u, GLuint v1 = %u, GLuint v2 = "
-        "%u)",
-        program, location, v0, v1, v2);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLuint xyz[3] = {v0, v1, v2};
+    ProgramUniform3uiv(program, location, 1, xyz);
 }
 
 void GL_APIENTRY
 ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
 {
-    EVENT(
-        "(GLuint program = %u, GLint location = %d, GLuint v0 = %u, GLuint v1 = %u, GLuint v2 = "
-        "%u, GLuint v3 = %u)",
-        program, location, v0, v1, v2, v3);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLuint xyzw[4] = {v0, v1, v2, v3};
+    ProgramUniform4uiv(program, location, 1, xyzw);
 }
 
 void GL_APIENTRY ProgramUniform1f(GLuint program, GLint location, GLfloat v0)
 {
-    EVENT("(GLuint program = %u, GLint location = %d, GLfloat v0 = %g)", program, location, v0);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    ProgramUniform1fv(program, location, 1, &v0);
 }
 
 void GL_APIENTRY ProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)
 {
-    EVENT("(GLuint program = %u, GLint location = %d, GLfloat v0 = %g, GLfloat v1 = %g)", program,
-          location, v0, v1);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLfloat xy[2] = {v0, v1};
+    ProgramUniform2fv(program, location, 1, xy);
 }
 
 void GL_APIENTRY
 ProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
 {
-    EVENT(
-        "(GLuint program = %u, GLint location = %d, GLfloat v0 = %g, GLfloat v1 = %g, GLfloat v2 = "
-        "%g)",
-        program, location, v0, v1, v2);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLfloat xyz[3] = {v0, v1, v2};
+    ProgramUniform3fv(program, location, 1, xyz);
 }
 
 void GL_APIENTRY
 ProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
 {
-    EVENT(
-        "(GLuint program = %u, GLint location = %d, GLfloat v0 = %g, GLfloat v1 = %g, GLfloat v2 = "
-        "%g, GLfloat v3 = %g)",
-        program, location, v0, v1, v2, v3);
-    Context *context = GetValidGlobalContext();
-    if (context)
-    {
-        if (!context->skipValidation())
-        {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
-        }
-        UNIMPLEMENTED();
-    }
+    GLfloat xyzw[4] = {v0, v1, v2, v3};
+    ProgramUniform4fv(program, location, 1, xyzw);
 }
 
 void GL_APIENTRY ProgramUniform1iv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_INT, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform1iv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform2iv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_INT_VEC2, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform2iv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform3iv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_INT_VEC3, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform3iv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform4iv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_INT_VEC4, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform4iv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform1uiv(GLuint program,
                                     GLint location,
                                     GLsizei count,
                                     const GLuint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLuint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_UNSIGNED_INT, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform1uiv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform2uiv(GLuint program,
                                     GLint location,
                                     GLsizei count,
                                     const GLuint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLuint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_UNSIGNED_INT_VEC2, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform2uiv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform3uiv(GLuint program,
                                     GLint location,
                                     GLsizei count,
                                     const GLuint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLuint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_UNSIGNED_INT_VEC3, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform3uiv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform4uiv(GLuint program,
                                     GLint location,
                                     GLsizei count,
                                     const GLuint *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLuint* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_UNSIGNED_INT_VEC4, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform4uiv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform1fv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLfloat* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_FLOAT, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform1fv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform2fv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLfloat* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_FLOAT_VEC2, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform2fv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform3fv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLfloat* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_FLOAT_VEC3, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform3fv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniform4fv(GLuint program,
                                    GLint location,
                                    GLsizei count,
                                    const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, const GLfloat* value = "
         "0x%0.8p)",
         program, location, count, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniform(context, GL_FLOAT_VEC4, program, location, count))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniform4fv(location, count, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix2fv(GLuint program,
                                          GLint location,
                                          GLsizei count,
                                          GLboolean transpose,
                                          const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT2, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix2fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix3fv(GLuint program,
                                          GLint location,
                                          GLsizei count,
                                          GLboolean transpose,
                                          const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT3, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix3fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix4fv(GLuint program,
                                          GLint location,
                                          GLsizei count,
                                          GLboolean transpose,
                                          const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT4, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix4fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix2x3fv(GLuint program,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT2x3, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix2x3fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix3x2fv(GLuint program,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT3x2, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix3x2fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix2x4fv(GLuint program,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT2x4, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix2x4fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix4x2fv(GLuint program,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT4x2, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix4x2fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix3x4fv(GLuint program,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT3x4, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix3x4fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ProgramUniformMatrix4x3fv(GLuint program,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value)
 {
     EVENT(
         "(GLuint program = %u, GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, "
         "const GLfloat* value = 0x%0.8p)",
         program, location, count, transpose, value);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (!ValidateProgramUniformMatrix(context, GL_FLOAT_MAT4x3, program, location, count,
+                                          transpose))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            return;
         }
-        UNIMPLEMENTED();
+
+        Program *programObject = context->getProgram(program);
+        ASSERT(programObject);
+        programObject->setUniformMatrix4x3fv(location, count, transpose, value);
     }
 }
 
 void GL_APIENTRY ValidateProgramPipeline(GLuint pipeline)
 {
     EVENT("(GLuint pipeline = %u)", pipeline);
     Context *context = GetValidGlobalContext();
     if (context)
@@ -989,21 +944,21 @@ void GL_APIENTRY BindImageTexture(GLuint
 {
     EVENT(
         "(GLuint unit = %u, GLuint texture = %u, GLint level = %d, GLboolean layered = %u, GLint "
         "layer = %d, GLenum access = 0x%X, GLenum format = 0x%X)",
         unit, texture, level, layered, layer, access, format);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (texture != 0)
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            // Binding non-zero image textures is not implemented yet.
+            UNIMPLEMENTED();
         }
-        UNIMPLEMENTED();
     }
 }
 
 void GL_APIENTRY GetBooleani_v(GLenum target, GLuint index, GLboolean *data)
 {
     EVENT("(GLenum target = 0x%X, GLuint index = %u, GLboolean* data = 0x%0.8p)", target, index,
           data);
 
@@ -1075,21 +1030,21 @@ void GL_APIENTRY GetMultisamplefv(GLenum
 }
 
 void GL_APIENTRY SampleMaski(GLuint maskNumber, GLbitfield mask)
 {
     EVENT("(GLuint maskNumber = %u, GLbitfield mask = 0x%X)", maskNumber, mask);
     Context *context = GetValidGlobalContext();
     if (context)
     {
-        if (!context->skipValidation())
+        if (mask != ~GLbitfield(0))
         {
-            context->handleError(Error(GL_INVALID_OPERATION, "Entry point not implemented"));
+            // Setting a non-default sample mask is not implemented yet.
+            UNIMPLEMENTED();
         }
-        UNIMPLEMENTED();
     }
 }
 
 void GL_APIENTRY GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)
 {
     EVENT("(GLenum target = 0x%X, GLint level = %d, GLenum pname = 0x%X, GLint* params = 0x%0.8p)",
           target, level, pname, params);
     UNIMPLEMENTED();
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/libGLESv2/moz.build
+++ b/gfx/angle/src/libGLESv2/moz.build
@@ -34,16 +34,19 @@ if CONFIG['GNU_CXX']:
             '-Wno-unused-private-field',
         ]
     else:
         CXXFLAGS += [
             '-Wno-shadow-compatible-local',
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
 if not CONFIG['MOZ_DEBUG']:
     DEFINES['_SECURE_SCL'] = 0
 
 DEFINES['ANGLE_ENABLE_D3D9'] = True
 DEFINES['ANGLE_SKIP_DXGI_1_2_CHECK'] = True
@@ -65,16 +68,21 @@ LOCAL_INCLUDES += [ '../../include', '..
 DEFINES['LIBANGLE_IMPLEMENTATION'] = "1"
 DEFINES['ANGLE_ENABLE_HLSL'] = "1"
 DEFINES['ANGLE_ENABLE_GLSL'] = "1"
 DEFINES['ANGLE_ENABLE_ESSL'] = "1"
 DEFINES['ANGLE_ENABLE_KEYEDMUTEX'] = "1"
 
 if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
   OS_LIBS += [ 'd3d9', 'dxguid' ]
+else:
+  EXTRA_DSO_LDOPTS += [
+    '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+    '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+  ]
 
 GeckoSharedLibrary('libGLESv2', linkage=None)
 
 RCFILE = SRCDIR + '/libGLESv2.rc'
 DEFFILE = SRCDIR + '/libGLESv2.def'
 
 USE_LIBS += ['libANGLE']
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/BUILD.gn
+++ b/gfx/angle/src/tests/BUILD.gn
@@ -164,16 +164,19 @@ if (build_angle_deqp_tests) {
                           [ "deqp.gypi" ])
 
   config("angle_deqp_support") {
     include_dirs = rebase_path(deqp_gypi.deqp_include_dirs, ".", "../..")
     if (is_win) {
       include_dirs += [ "../deqp/src/framework/platform/win32" ]
       cflags = deqp_gypi.deqp_win_cflags
     }
+    if (is_android) {
+      include_dirs += [ "../../../deqp/src/framework/platform/android" ]
+    }
     defines = deqp_gypi.deqp_defines
     defines += [ "_MBCS" ]
 
     # Ask the system headers to expose all the regular function otherwise
     # dEQP doesn't compile and produces warnings about implicitly defined
     # functions.
     if (is_linux) {
       # This has to be GNU_SOURCE as on Linux dEQP uses syscall()
@@ -234,16 +237,18 @@ if (build_angle_deqp_tests) {
     if (is_win) {
       sources += rebase_path(deqp_gypi.deqp_libtester_sources_win, ".", "../..")
     }
     if (is_linux || is_android) {
       sources +=
           rebase_path(deqp_gypi.deqp_libtester_sources_unix, ".", "../..")
     }
     if (is_android) {
+      sources +=
+          rebase_path(deqp_gypi.deqp_libtester_sources_android, ".", "../..")
       libs = [ "log" ]
     }
   }
 
   config("angle_deqp_gtest_support_config") {
     include_dirs = [ "third_party/gpu_test_expectations" ]
   }
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/angle_perftests.gypi
+++ b/gfx/angle/src/tests/angle_perftests.gypi
@@ -19,16 +19,17 @@
             '<(angle_path)/src/tests/perf_tests/ANGLEPerfTest.h',
             '<(angle_path)/src/tests/perf_tests/BufferSubData.cpp',
             '<(angle_path)/src/tests/perf_tests/DrawCallPerf.cpp',
             '<(angle_path)/src/tests/perf_tests/DynamicPromotionPerfTest.cpp',
             '<(angle_path)/src/tests/perf_tests/EGLInitializePerf.cpp',
             '<(angle_path)/src/tests/perf_tests/IndexConversionPerf.cpp',
             '<(angle_path)/src/tests/perf_tests/InstancingPerf.cpp',
             '<(angle_path)/src/tests/perf_tests/InterleavedAttributeData.cpp',
+            '<(angle_path)/src/tests/perf_tests/LinkProgramPerfTest.cpp',
             '<(angle_path)/src/tests/perf_tests/PointSprites.cpp',
             '<(angle_path)/src/tests/perf_tests/TexSubImage.cpp',
             '<(angle_path)/src/tests/perf_tests/TextureSampling.cpp',
             '<(angle_path)/src/tests/perf_tests/TexturesPerf.cpp',
             '<(angle_path)/src/tests/perf_tests/UniformsPerf.cpp',
             '<(angle_path)/src/tests/perf_tests/third_party/perf/perf_test.cc',
             '<(angle_path)/src/tests/perf_tests/third_party/perf/perf_test.h',
             '<(angle_path)/src/tests/test_utils/angle_test_configs.cpp',
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/angle_unittests.gypi
+++ b/gfx/angle/src/tests/angle_unittests.gypi
@@ -15,44 +15,50 @@
         'angle_unittests_sources':
         [
             '<(angle_path)/src/common/BitSetIterator_unittest.cpp',
             '<(angle_path)/src/common/Optional_unittest.cpp',
             '<(angle_path)/src/common/mathutil_unittest.cpp',
             '<(angle_path)/src/common/matrix_utils_unittest.cpp',
             '<(angle_path)/src/common/string_utils_unittest.cpp',
             '<(angle_path)/src/common/utilities_unittest.cpp',
+            '<(angle_path)/src/common/vector_utils_unittest.cpp',
             '<(angle_path)/src/libANGLE/BinaryStream_unittest.cpp',
             '<(angle_path)/src/libANGLE/Config_unittest.cpp',
             '<(angle_path)/src/libANGLE/Fence_unittest.cpp',
             '<(angle_path)/src/libANGLE/HandleAllocator_unittest.cpp',
             '<(angle_path)/src/libANGLE/HandleRangeAllocator_unittest.cpp',
             '<(angle_path)/src/libANGLE/Image_unittest.cpp',
             '<(angle_path)/src/libANGLE/ImageIndexIterator_unittest.cpp',
             '<(angle_path)/src/libANGLE/Program_unittest.cpp',
             '<(angle_path)/src/libANGLE/ResourceManager_unittest.cpp',
             '<(angle_path)/src/libANGLE/Surface_unittest.cpp',
             '<(angle_path)/src/libANGLE/TransformFeedback_unittest.cpp',
+            '<(angle_path)/src/libANGLE/WorkerThread_unittest.cpp',
             '<(angle_path)/src/libANGLE/renderer/BufferImpl_mock.h',
             '<(angle_path)/src/libANGLE/renderer/FramebufferImpl_mock.h',
             '<(angle_path)/src/libANGLE/renderer/ProgramImpl_mock.h',
             '<(angle_path)/src/libANGLE/renderer/RenderbufferImpl_mock.h',
             '<(angle_path)/src/libANGLE/renderer/ImageImpl_mock.h',
             '<(angle_path)/src/libANGLE/renderer/TextureImpl_mock.h',
             '<(angle_path)/src/libANGLE/renderer/TransformFeedbackImpl_mock.h',
             '<(angle_path)/src/libANGLE/signal_utils_unittest.cpp',
             '<(angle_path)/src/libANGLE/validationES_unittest.cpp',
             '<(angle_path)/src/tests/angle_unittests_utils.h',
             '<(angle_path)/src/tests/compiler_tests/API_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/CollectVariables_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/ConstantFolding_test.cpp',
+            '<(angle_path)/src/tests/compiler_tests/ConstantFoldingNaN_test.cpp',
+            '<(angle_path)/src/tests/compiler_tests/ConstantFoldingOverflow_test.cpp',
+            '<(angle_path)/src/tests/compiler_tests/ConstructCompiler_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/DebugShaderPrecision_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/EmulateGLFragColorBroadcast_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/ExpressionLimit_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/EXT_blend_func_extended_test.cpp',
+            '<(angle_path)/src/tests/compiler_tests/FloatLex_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/FragDepth_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/GLSLCompatibilityOutput_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/IntermNode_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/MalformedShader_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/NV_draw_buffers_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/Pack_Unpack_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp',
             '<(angle_path)/src/tests/compiler_tests/PruneUnusedFunctions_test.cpp',
@@ -83,20 +89,23 @@
             '<(angle_path)/src/tests/preprocessor_tests/pragma_test.cpp',
             '<(angle_path)/src/tests/preprocessor_tests/PreprocessorTest.cpp',
             '<(angle_path)/src/tests/preprocessor_tests/PreprocessorTest.h',
             '<(angle_path)/src/tests/preprocessor_tests/space_test.cpp',
             '<(angle_path)/src/tests/preprocessor_tests/token_test.cpp',
             '<(angle_path)/src/tests/preprocessor_tests/version_test.cpp',
             '<(angle_path)/src/tests/test_utils/compiler_test.cpp',
             '<(angle_path)/src/tests/test_utils/compiler_test.h',
+            '<(angle_path)/src/tests/test_utils/ConstantFoldingTest.h',
+            '<(angle_path)/src/tests/test_utils/ConstantFoldingTest.cpp',
         ],
         # TODO(jmadill): should probably call this windows sources
         'angle_unittests_hlsl_sources':
         [
+            '<(angle_path)/src/libANGLE/renderer/d3d/VaryingPacking_unittest.cpp',
             '<(angle_path)/src/tests/compiler_tests/UnrollFlatten_test.cpp',
         ],
     },
     # Everything below this but the WinRT configuration is duplicated in the GN build.
     # If you change anything also change angle/src/tests/BUILD.gn
     'dependencies':
     [
         '<(angle_path)/src/angle.gyp:libANGLE',
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/tests/compiler_tests/ConstantFoldingNaN_test.cpp
@@ -0,0 +1,67 @@
+//
+// Copyright (c) 2016 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.
+//
+// ConstantFoldingNaN_test.cpp:
+//   Tests for constant folding that results in NaN according to IEEE and should also generate a
+//   warning. The ESSL spec does not mandate generating NaNs, but this is reasonable behavior in
+//   this case.
+//
+
+#include "tests/test_utils/ConstantFoldingTest.h"
+
+using namespace sh;
+
+namespace
+{
+
+class ConstantFoldingNaNExpressionTest : public ConstantFoldingExpressionTest
+{
+  public:
+    ConstantFoldingNaNExpressionTest() {}
+
+    void evaluateFloatNaN(const std::string &floatString)
+    {
+        evaluateFloat(floatString);
+        ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::quiet_NaN()));
+        ASSERT_TRUE(hasWarning());
+    }
+};
+
+}  // anonymous namespace
+
+// Test that infinity - infinity evaluates to NaN.
+TEST_F(ConstantFoldingNaNExpressionTest, FoldInfinityMinusInfinity)
+{
+    const std::string &floatString = "1.0e2048 - 1.0e2048";
+    evaluateFloatNaN(floatString);
+}
+
+// Test that infinity + negative infinity evaluates to NaN.
+TEST_F(ConstantFoldingNaNExpressionTest, FoldInfinityPlusNegativeInfinity)
+{
+    const std::string &floatString = "1.0e2048 + (-1.0e2048)";
+    evaluateFloatNaN(floatString);
+}
+
+// Test that infinity multiplied by zero evaluates to NaN.
+TEST_F(ConstantFoldingNaNExpressionTest, FoldInfinityMultipliedByZero)
+{
+    const std::string &floatString = "1.0e2048 * 0.0";
+    evaluateFloatNaN(floatString);
+}
+
+// Test that infinity divided by infinity evaluates to NaN.
+TEST_F(ConstantFoldingNaNExpressionTest, FoldInfinityDividedByInfinity)
+{
+    const std::string &floatString = "1.0e2048 / 1.0e2048";
+    evaluateFloatNaN(floatString);
+}
+
+// Test that zero divided by zero evaluates to NaN.
+TEST_F(ConstantFoldingNaNExpressionTest, FoldZeroDividedByZero)
+{
+    const std::string &floatString = "0.0 / 0.0";
+    evaluateFloatNaN(floatString);
+}
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/tests/compiler_tests/ConstantFoldingOverflow_test.cpp
@@ -0,0 +1,65 @@
+//
+// Copyright (c) 2016 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.
+//
+// ConstantFoldingOverflow_test.cpp:
+//   Tests for constant folding that results in floating point overflow.
+//   In IEEE floating point, the overflow result depends on which of the various rounding modes is
+//   chosen - it's either the maximum representable value or infinity.
+//   ESSL 3.00.6 section 4.5.1 says that the rounding mode cannot be set and is undefined, so the
+//   result in this case is not defined by the spec.
+//   We decide to overflow to infinity and issue a warning.
+//
+
+#include "tests/test_utils/ConstantFoldingTest.h"
+
+using namespace sh;
+
+namespace
+{
+
+class ConstantFoldingOverflowExpressionTest : public ConstantFoldingExpressionTest
+{
+  public:
+    ConstantFoldingOverflowExpressionTest() {}
+
+    void evaluateFloatOverflow(const std::string &floatString, bool positive)
+    {
+        evaluateFloat(floatString);
+        float expected = positive ? std::numeric_limits<float>::infinity()
+                                  : -std::numeric_limits<float>::infinity();
+        ASSERT_TRUE(constantFoundInAST(expected));
+        ASSERT_TRUE(hasWarning());
+    }
+};
+
+}  // anonymous namespace
+
+// Test that addition that overflows is evaluated correctly.
+TEST_F(ConstantFoldingOverflowExpressionTest, Add)
+{
+    const std::string &floatString = "2.0e38 + 2.0e38";
+    evaluateFloatOverflow(floatString, true);
+}
+
+// Test that subtraction that overflows is evaluated correctly.
+TEST_F(ConstantFoldingOverflowExpressionTest, Subtract)
+{
+    const std::string &floatString = "2.0e38 - (-2.0e38)";
+    evaluateFloatOverflow(floatString, true);
+}
+
+// Test that multiplication that overflows is evaluated correctly.
+TEST_F(ConstantFoldingOverflowExpressionTest, Multiply)
+{
+    const std::string &floatString = "1.0e30 * 1.0e10";
+    evaluateFloatOverflow(floatString, true);
+}
+
+// Test that division that overflows is evaluated correctly.
+TEST_F(ConstantFoldingOverflowExpressionTest, Divide)
+{
+    const std::string &floatString = "1.0e30 / 1.0e-10";
+    evaluateFloatOverflow(floatString, true);
+}
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/compiler_tests/ConstantFolding_test.cpp
+++ b/gfx/angle/src/tests/compiler_tests/ConstantFolding_test.cpp
@@ -2,179 +2,30 @@
 // Copyright (c) 2015 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.
 //
 // ConstantFolding_test.cpp:
 //   Tests for constant folding
 //
 
-#include <vector>
-
-#include "angle_gl.h"
-#include "gtest/gtest.h"
-#include "GLSLANG/ShaderLang.h"
-#include "compiler/translator/PoolAlloc.h"
-#include "compiler/translator/TranslatorESSL.h"
+#include "tests/test_utils/ConstantFoldingTest.h"
 
 using namespace sh;
 
-template <typename T>
-class ConstantFinder : public TIntermTraverser
+// Test that zero, true or false are not found in AST when they are not expected. This is to make
+// sure that the subsequent tests run correctly.
+TEST_F(ConstantFoldingExpressionTest, FoldFloatTestSanityCheck)
 {
-  public:
-    ConstantFinder(const std::vector<T> &constantVector)
-        : TIntermTraverser(true, false, false),
-          mConstantVector(constantVector),
-          mFaultTolerance(T()),
-          mFound(false)
-    {}
-
-    ConstantFinder(const std::vector<T> &constantVector, const T &faultTolerance)
-        : TIntermTraverser(true, false, false),
-        mConstantVector(constantVector),
-        mFaultTolerance(faultTolerance),
-        mFound(false)
-    {}
-
-    ConstantFinder(const T &value)
-        : TIntermTraverser(true, false, false),
-          mFaultTolerance(T()),
-          mFound(false)
-    {
-        mConstantVector.push_back(value);
-    }
-
-    void visitConstantUnion(TIntermConstantUnion *node)
-    {
-        if (node->getType().getObjectSize() == mConstantVector.size())
-        {
-            bool found = true;
-            for (size_t i = 0; i < mConstantVector.size(); i++)
-            {
-                if (!isEqual(node->getUnionArrayPointer()[i], mConstantVector[i]))
-                {
-                    found = false;
-                    break;
-                }
-            }
-            if (found)
-            {
-                mFound = found;
-            }
-        }
-    }
-
-    bool found() const { return mFound; }
-
-  private:
-    bool isEqual(const TConstantUnion &node, const float &value) const
-    {
-        return mFaultTolerance >= fabsf(node.getFConst() - value);
-    }
-
-    bool isEqual(const TConstantUnion &node, const int &value) const
-    {
-        ASSERT(mFaultTolerance < std::numeric_limits<int>::max());
-        // abs() returns 0 at least on some platforms when the minimum int value is passed in (it
-        // doesn't have a positive counterpart).
-        return mFaultTolerance >= abs(node.getIConst() - value) &&
-               (node.getIConst() - value) != std::numeric_limits<int>::min();
-    }
-
-    bool isEqual(const TConstantUnion &node, const unsigned int &value) const
-    {
-        ASSERT(mFaultTolerance < static_cast<unsigned int>(std::numeric_limits<int>::max()));
-        return static_cast<int>(mFaultTolerance) >=
-                   abs(static_cast<int>(node.getUConst() - value)) &&
-               static_cast<int>(node.getUConst() - value) != std::numeric_limits<int>::min();
-    }
-
-    bool isEqual(const TConstantUnion &node, const bool &value) const
-    {
-        return node.getBConst() == value;
-    }
-
-    std::vector<T> mConstantVector;
-    T mFaultTolerance;
-    bool mFound;
-};
-
-class ConstantFoldingTest : public testing::Test
-{
-  public:
-    ConstantFoldingTest() {}
-
-  protected:
-    virtual void SetUp()
-    {
-        allocator.push();
-        SetGlobalPoolAllocator(&allocator);
-        ShBuiltInResources resources;
-        InitBuiltInResources(&resources);
-
-        mTranslatorESSL = new TranslatorESSL(GL_FRAGMENT_SHADER, SH_GLES3_SPEC);
-        ASSERT_TRUE(mTranslatorESSL->Init(resources));
-    }
-
-    virtual void TearDown()
-    {
-        delete mTranslatorESSL;
-        SetGlobalPoolAllocator(NULL);
-        allocator.pop();
-    }
-
-    void compile(const std::string& shaderString)
-    {
-        const char *shaderStrings[] = { shaderString.c_str() };
-
-        mASTRoot = mTranslatorESSL->compileTreeForTesting(shaderStrings, 1, SH_OBJECT_CODE);
-        if (!mASTRoot)
-        {
-            TInfoSink &infoSink = mTranslatorESSL->getInfoSink();
-            FAIL() << "Shader compilation into ESSL failed " << infoSink.info.c_str();
-        }
-    }
-
-    template <typename T>
-    bool constantFoundInAST(T constant)
-    {
-        ConstantFinder<T> finder(constant);
-        mASTRoot->traverse(&finder);
-        return finder.found();
-    }
-
-    template <typename T>
-    bool constantVectorFoundInAST(const std::vector<T> &constantVector)
-    {
-        ConstantFinder<T> finder(constantVector);
-        mASTRoot->traverse(&finder);
-        return finder.found();
-    }
-
-    template <typename T>
-    bool constantColumnMajorMatrixFoundInAST(const std::vector<T> &constantMatrix)
-    {
-        return constantVectorFoundInAST(constantMatrix);
-    }
-
-    template <typename T>
-    bool constantVectorNearFoundInAST(const std::vector<T> &constantVector, const T &faultTolerance)
-    {
-        ConstantFinder<T> finder(constantVector, faultTolerance);
-        mASTRoot->traverse(&finder);
-        return finder.found();
-    }
-
-  private:
-    TranslatorESSL *mTranslatorESSL;
-    TIntermNode *mASTRoot;
-
-    TPoolAllocator allocator;
-};
+    const std::string &floatString = "1.0";
+    evaluateFloat(floatString);
+    ASSERT_FALSE(constantFoundInAST(0.0f));
+    ASSERT_FALSE(constantFoundInAST(true));
+    ASSERT_FALSE(constantFoundInAST(false));
+}
 
 TEST_F(ConstantFoldingTest, FoldIntegerAdd)
 {
     const std::string &shaderString =
         "#version 300 es\n"
         "precision mediump float;\n"
         "out int my_Int;\n"
         "void main() {\n"
@@ -1057,8 +908,339 @@ TEST_F(ConstantFoldingTest, FoldShiftByZ
         "    int i = (3 >> 0);\n"
         "    int j = (73 << 0);\n"
         "    my_FragColor = vec4(i, j, i, j);\n"
         "}\n";
     compile(shaderString);
     ASSERT_TRUE(constantFoundInAST(3));
     ASSERT_TRUE(constantFoundInAST(73));
 }
+
+// Test that folding IsInf results in true when the parameter is an out-of-range float literal.
+// ESSL 3.00.6 section 4.1.4 Floats:
+// "If the value of the floating point number is too large (small) to be stored as a single
+// precision value, it is converted to positive (negative) infinity."
+// ESSL 3.00.6 section 12.4:
+// "Mandate support for signed infinities."
+TEST_F(ConstantFoldingTest, FoldIsInfOutOfRangeFloatLiteral)
+{
+    const std::string &shaderString =
+        "#version 300 es\n"
+        "precision mediump float;\n"
+        "out vec4 my_FragColor;\n"
+        "void main()\n"
+        "{\n"
+        "    bool b = isinf(1.0e2048);\n"
+        "    my_FragColor = vec4(b);\n"
+        "}\n";
+    compile(shaderString);
+    ASSERT_TRUE(constantFoundInAST(true));
+}
+
+// Test that floats that are too small to be represented get flushed to zero.
+// ESSL 3.00.6 section 4.1.4 Floats:
+// "A value with a magnitude too small to be represented as a mantissa and exponent is converted to
+// zero."
+TEST_F(ConstantFoldingExpressionTest, FoldTooSmallFloat)
+{
+    const std::string &floatString = "1.0e-2048";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(0.0f));
+}
+
+// IEEE 754 dictates that behavior of infinity is derived from limiting cases of real arithmetic.
+// lim radians(x) x -> inf = inf
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldRadiansInfinity)
+{
+    const std::string &floatString = "radians(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that behavior of infinity is derived from limiting cases of real arithmetic.
+// lim degrees(x) x -> inf = inf
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldDegreesInfinity)
+{
+    const std::string &floatString = "degrees(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that sinh(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldSinhInfinity)
+{
+    const std::string &floatString = "sinh(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that sinh(-inf) = -inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldSinhNegativeInfinity)
+{
+    const std::string &floatString = "sinh(-1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that cosh(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldCoshInfinity)
+{
+    const std::string &floatString = "cosh(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that cosh(-inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldCoshNegativeInfinity)
+{
+    const std::string &floatString = "cosh(-1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that asinh(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldAsinhInfinity)
+{
+    const std::string &floatString = "asinh(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that asinh(-inf) = -inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldAsinhNegativeInfinity)
+{
+    const std::string &floatString = "asinh(-1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that acosh(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldAcoshInfinity)
+{
+    const std::string &floatString = "acosh(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that pow or powr(0, inf) = 0.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldPowInfinity)
+{
+    const std::string &floatString = "pow(0.0, 1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(0.0f));
+}
+
+// IEEE 754 dictates that exp(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldExpInfinity)
+{
+    const std::string &floatString = "exp(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that exp(-inf) = 0.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldExpNegativeInfinity)
+{
+    const std::string &floatString = "exp(-1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(0.0f));
+}
+
+// IEEE 754 dictates that log(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldLogInfinity)
+{
+    const std::string &floatString = "log(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that exp2(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldExp2Infinity)
+{
+    const std::string &floatString = "exp2(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that exp2(-inf) = 0.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldExp2NegativeInfinity)
+{
+    const std::string &floatString = "exp2(-1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(0.0f));
+}
+
+// IEEE 754 dictates that log2(inf) = inf.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldLog2Infinity)
+{
+    const std::string &floatString = "log2(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that behavior of infinity is derived from limiting cases of real arithmetic.
+// lim sqrt(x) x -> inf = inf
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldSqrtInfinity)
+{
+    const std::string &floatString = "sqrt(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that rSqrt(inf) = 0
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldInversesqrtInfinity)
+{
+    const std::string &floatString = "inversesqrt(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(0.0f));
+}
+
+// IEEE 754 dictates that behavior of infinity is derived from limiting cases of real arithmetic.
+// lim length(x) x -> inf = inf
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldLengthInfinity)
+{
+    const std::string &floatString = "length(1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that behavior of infinity is derived from limiting cases of real arithmetic.
+// lim dot(x, y) x -> inf, y > 0 = inf
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldDotInfinity)
+{
+    const std::string &floatString = "dot(1.0e2048, 1.0)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// IEEE 754 dictates that behavior of infinity is derived from limiting cases of real arithmetic.
+// lim dot(vec2(x, y), vec2(z)) x -> inf, finite y, z > 0 = inf
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldDotInfinity2)
+{
+    const std::string &floatString = "dot(vec2(1.0e2048, -1.0), vec2(1.0))";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// Faceforward behavior with infinity as a parameter can be derived from dot().
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldFaceForwardInfinity)
+{
+    const std::string &floatString = "faceforward(4.0, 1.0e2048, 1.0)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-4.0f));
+}
+
+// Faceforward behavior with infinity as a parameter can be derived from dot().
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldFaceForwardInfinity2)
+{
+    const std::string &floatString = "faceforward(vec2(4.0), vec2(1.0e2048, -1.0), vec2(1.0)).x";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-4.0f));
+}
+
+// Test that infinity - finite value evaluates to infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldInfinityMinusFinite)
+{
+    const std::string &floatString = "1.0e2048 - 1.0e20";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// Test that -infinity + finite value evaluates to -infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldMinusInfinityPlusFinite)
+{
+    const std::string &floatString = "(-1.0e2048) + 1.0e20";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-std::numeric_limits<float>::infinity()));
+}
+
+// Test that infinity * finite value evaluates to infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldInfinityMultipliedByFinite)
+{
+    const std::string &floatString = "1.0e2048 * 1.0e-20";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// Test that infinity * infinity evaluates to infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldInfinityMultipliedByInfinity)
+{
+    const std::string &floatString = "1.0e2048 * 1.0e2048";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+}
+
+// Test that infinity * negative infinity evaluates to negative infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldInfinityMultipliedByNegativeInfinity)
+{
+    const std::string &floatString = "1.0e2048 * (-1.0e2048)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-std::numeric_limits<float>::infinity()));
+}
+
+// Test that dividing by minus zero results in the appropriately signed infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+// "If both positive and negative zeros are implemented, the correctly signed Inf will be
+// generated".
+TEST_F(ConstantFoldingExpressionTest, FoldDivideByNegativeZero)
+{
+    const std::string &floatString = "1.0 / (-0.0)";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-std::numeric_limits<float>::infinity()));
+    ASSERT_TRUE(hasWarning());
+}
+
+// Test that infinity divided by zero evaluates to infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldInfinityDividedByZero)
+{
+    const std::string &floatString = "1.0e2048 / 0.0";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(std::numeric_limits<float>::infinity()));
+    ASSERT_TRUE(hasWarning());
+}
+
+// Test that negative infinity divided by zero evaluates to negative infinity.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldMinusInfinityDividedByZero)
+{
+    const std::string &floatString = "(-1.0e2048) / 0.0";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(-std::numeric_limits<float>::infinity()));
+    ASSERT_TRUE(hasWarning());
+}
+
+// Test that dividing a finite number by infinity results in zero.
+// ESSL 3.00.6 section 4.5.1: "Infinities and zeroes are generated as dictated by IEEE".
+TEST_F(ConstantFoldingExpressionTest, FoldDivideByInfinity)
+{
+    const std::string &floatString = "1.0e30 / 1.0e2048";
+    evaluateFloat(floatString);
+    ASSERT_TRUE(constantFoundInAST(0.0f));
+}
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/tests/compiler_tests/ConstructCompiler_test.cpp
@@ -0,0 +1,45 @@
+//
+// Copyright (c) 2016 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.
+//
+// ConstructCompiler_test.cpp
+//   Test the sh::ConstructCompiler interface with different parameters.
+//
+
+#include "angle_gl.h"
+#include "gtest/gtest.h"
+#include "GLSLANG/ShaderLang.h"
+
+// Test default parameters.
+TEST(ConstructCompilerTest, DefaultParameters)
+{
+    ShBuiltInResources resources;
+    sh::InitBuiltInResources(&resources);
+    ShHandle compiler = sh::ConstructCompiler(GL_FRAGMENT_SHADER, SH_WEBGL_SPEC,
+                                              SH_GLSL_COMPATIBILITY_OUTPUT, &resources);
+    ASSERT_NE(nullptr, compiler);
+}
+
+// Test invalid MaxDrawBuffers zero.
+TEST(ConstructCompilerTest, InvalidMaxDrawBuffers)
+{
+    ShBuiltInResources resources;
+    sh::InitBuiltInResources(&resources);
+    resources.MaxDrawBuffers = 0;
+    ShHandle compiler        = sh::ConstructCompiler(GL_FRAGMENT_SHADER, SH_WEBGL_SPEC,
+                                              SH_GLSL_COMPATIBILITY_OUTPUT, &resources);
+    ASSERT_EQ(nullptr, compiler);
+}
+
+// Test invalid MaxDualSourceDrawBuffers zero.
+TEST(ConstructCompilerTest, InvalidMaxDualSourceDrawBuffers)
+{
+    ShBuiltInResources resources;
+    sh::InitBuiltInResources(&resources);
+    resources.EXT_blend_func_extended  = 1;
+    resources.MaxDualSourceDrawBuffers = 0;
+    ShHandle compiler                  = sh::ConstructCompiler(GL_FRAGMENT_SHADER, SH_WEBGL_SPEC,
+                                              SH_GLSL_COMPATIBILITY_OUTPUT, &resources);
+    ASSERT_EQ(nullptr, compiler);
+}
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/tests/compiler_tests/FloatLex_test.cpp
@@ -0,0 +1,195 @@
+//
+// Copyright (c) 2016 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.
+//
+// FloatLex_test.cpp:
+// Tests for parsing floats in GLSL source.
+//
+
+#include <sstream>
+#include <string>
+
+#include "common/debug.h"
+#include "common/mathutil.h"
+#include "compiler/translator/util.h"
+#include "gtest/gtest.h"
+
+namespace
+{
+
+class StrtofClampParser
+{
+  public:
+    static float Parse(std::string str)
+    {
+        float value;
+        sh::strtof_clamp(str, &value);
+        return value;
+    }
+};
+
+// NumericLexFloat32OutOfRangeToInfinity usually only comes to play in corner cases of parsing, but
+// it's useful to test that it works as expected across the whole range of floats.
+class NumericLexFloatParser
+{
+  public:
+    static float Parse(std::string str) { return sh::NumericLexFloat32OutOfRangeToInfinity(str); }
+};
+
+}  // anonymous namespace
+
+template <typename T>
+class FloatLexTest : public ::testing::Test
+{
+  public:
+    FloatLexTest() {}
+
+  protected:
+    void SetUp() override {}
+
+    void TearDown() override {}
+
+    static bool ParsedMatches(std::string str, float expected)
+    {
+        return (T::Parse(str) == expected);
+    }
+
+    static bool IsInfinity(std::string str)
+    {
+        float f = T::Parse(str);
+        return gl::isInf(f);
+    }
+
+    static std::string Zeros(size_t count) { return std::string(count, '0'); }
+};
+
+typedef ::testing::Types<StrtofClampParser, NumericLexFloatParser> FloatParserTypes;
+TYPED_TEST_CASE(FloatLexTest, FloatParserTypes);
+
+TYPED_TEST(FloatLexTest, One)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("1.0", 1.0f));
+}
+
+TYPED_TEST(FloatLexTest, Ten)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("10.0", 10.0f));
+}
+
+TYPED_TEST(FloatLexTest, TenScientific)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("1.0e1", 10.0f));
+}
+
+TYPED_TEST(FloatLexTest, ScientificWithSmallMantissa)
+{
+    std::stringstream ss;
+    ss << "0." << TestFixture::Zeros(100) << "125e102";
+    ASSERT_TRUE(TestFixture::ParsedMatches(ss.str(), 12.5f));
+}
+
+TYPED_TEST(FloatLexTest, ScientificWithLargeMantissa)
+{
+    std::stringstream ss;
+    ss << "9" << TestFixture::Zeros(100) << ".0e-100";
+    ASSERT_TRUE(TestFixture::ParsedMatches(ss.str(), 9.0f));
+}
+
+TYPED_TEST(FloatLexTest, ScientificWithVerySmallMantissa)
+{
+    std::stringstream ss;
+    ss << "0." << TestFixture::Zeros(5000) << "125e5002";
+    ASSERT_TRUE(TestFixture::ParsedMatches(ss.str(), 12.5f));
+}
+
+TYPED_TEST(FloatLexTest, ScientificWithVeryLargeMantissa)
+{
+    std::stringstream ss;
+    ss << "9" << TestFixture::Zeros(5000) << ".0e-5000";
+    ASSERT_TRUE(TestFixture::ParsedMatches(ss.str(), 9.0f));
+}
+
+TYPED_TEST(FloatLexTest, StartWithDecimalDot)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches(".125", 0.125f));
+}
+
+TYPED_TEST(FloatLexTest, EndWithDecimalDot)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("123.", 123.0f));
+}
+
+TYPED_TEST(FloatLexTest, NoDecimalDot)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("125e-2", 1.25f));
+}
+
+TYPED_TEST(FloatLexTest, EndStartWithDecimalDotScientific)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches(".625e-1", 0.0625f));
+}
+
+TYPED_TEST(FloatLexTest, EndWithDecimalDotScientific)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("102400.e-2", 1024.0f));
+}
+
+TYPED_TEST(FloatLexTest, UppercaseE)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("125E-2", 1.25f));
+}
+
+TYPED_TEST(FloatLexTest, PlusInExponent)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("1E+2", 100.0f));
+}
+
+TYPED_TEST(FloatLexTest, SlightlyAboveMaxFloat)
+{
+    ASSERT_TRUE(TestFixture::IsInfinity("3.4029e38"));
+}
+
+TYPED_TEST(FloatLexTest, SlightlyBelowMaxFloat)
+{
+    ASSERT_FALSE(TestFixture::IsInfinity("3.4028e38"));
+}
+
+TYPED_TEST(FloatLexTest, SlightlyBelowMinSubnormalFloat)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("1.0e-48", 0.0f));
+}
+
+TYPED_TEST(FloatLexTest, SlightlyAboveMinNormalFloat)
+{
+    ASSERT_FALSE(TestFixture::ParsedMatches("1.0e-37", 0.0f));
+}
+
+TYPED_TEST(FloatLexTest, ManySignificantDigits)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("1.23456789", 1.23456789f));
+}
+
+TYPED_TEST(FloatLexTest, MantissaBitAboveMaxUint)
+{
+    ASSERT_TRUE(TestFixture::ParsedMatches("4294967299.", 4294967299.0f));
+}
+
+TYPED_TEST(FloatLexTest, ExponentBitAboveMaxInt)
+{
+    ASSERT_TRUE(TestFixture::IsInfinity("1.0e2147483649"));
+}
+
+TYPED_TEST(FloatLexTest, ExponentBitBelowMaxIntAndLargeMantissa)
+{
+    std::stringstream ss;
+    ss << "1" << TestFixture::Zeros(32) << ".0e2147483640";
+    ASSERT_TRUE(TestFixture::IsInfinity(ss.str()));
+}
+
+TYPED_TEST(FloatLexTest, ExponentBitAboveMinIntAndSmallMantissa)
+{
+    std::stringstream ss;
+    ss << "0." << TestFixture::Zeros(32) << "1e-2147483640";
+    ASSERT_TRUE(TestFixture::ParsedMatches(ss.str(), 0.0f));
+}
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/compiler_tests/MalformedShader_test.cpp
+++ b/gfx/angle/src/tests/compiler_tests/MalformedShader_test.cpp
@@ -144,22 +144,16 @@ class MalformedComputeShaderTest : publi
     {
         ShBuiltInResources resources;
         sh::InitBuiltInResources(&resources);
         mTranslator = new TranslatorESSL(GL_COMPUTE_SHADER, SH_GLES3_1_SPEC);
         ASSERT_TRUE(mTranslator->Init(resources));
     }
 };
 
-class UnrollForLoopsTest : public MalformedShaderTest
-{
-  public:
-    UnrollForLoopsTest() { mExtraCompileOptions = SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX; }
-};
-
 // This is a test for a bug that used to exist in ANGLE:
 // Calling a function with all parameters missing should not succeed.
 TEST_F(MalformedShaderTest, FunctionParameterMismatch)
 {
     const std::string &shaderString =
         "precision mediump float;\n"
         "float fun(float a) {\n"
         "   return a * 2.0;\n"
@@ -1440,55 +1434,16 @@ TEST_F(MalformedWebGL1ShaderTest, NonCon
         "    }\n"
         "}\n";
     if (compile(shaderString))
     {
         FAIL() << "Shader compilation succeeded, expecting failure " << mInfoLog;
     }
 }
 
-// Regression test for an old crash bug in ANGLE.
-// ForLoopUnroll used to crash when it encountered a while loop.
-TEST_F(UnrollForLoopsTest, WhileLoop)
-{
-    const std::string &shaderString =
-        "precision mediump float;\n"
-        "void main()\n"
-        "{\n"
-        "    while (true) {\n"
-        "        gl_FragColor = vec4(0.0);\n"
-        "        break;\n"
-        "    }\n"
-        "}\n";
-    if (!compile(shaderString))
-    {
-        FAIL() << "Shader compilation failed, expecting success " << mInfoLog;
-    }
-}
-
-// Regression test for an old crash bug in ANGLE.
-// ForLoopUnroll used to crash when it encountered a loop that didn't fit the ESSL 1.00
-// Appendix A limitations.
-TEST_F(UnrollForLoopsTest, UnlimitedForLoop)
-{
-    const std::string &shaderString =
-        "precision mediump float;\n"
-        "void main()\n"
-        "{\n"
-        "    for (;true;) {\n"
-        "        gl_FragColor = vec4(0.0);\n"
-        "        break;\n"
-        "    }\n"
-        "}\n";
-    if (!compile(shaderString))
-    {
-        FAIL() << "Shader compilation failed, expecting success " << mInfoLog;
-    }
-}
-
 // Check that indices that are not integers are rejected.
 // The check should be done even if ESSL 1.00 Appendix A limitations are not applied.
 TEST_F(MalformedShaderTest, NonIntegerIndex)
 {
     const std::string &shaderString =
         "precision mediump float;\n"
         "void main()\n"
         "{\n"
@@ -3150,9 +3105,28 @@ TEST_F(MalformedFragmentShaderGLES31Test
         "void main() {\n"
         "   myFunc(myImage);\n"
         "}\n";
 
     if (!compile(shaderString))
     {
         FAIL() << "Shader compilation failed, expecting success " << mInfoLog;
     }
-}
\ No newline at end of file
+}
+
+// Test that work group size can be used to size arrays.
+// GLSL ES 3.10.4 section 7.1.3 Compute Shader Special Variables
+TEST_F(MalformedComputeShaderTest, WorkGroupSizeAsArraySize)
+{
+    const std::string &shaderString =
+        "#version 310 es\n"
+        "layout(local_size_x = 5, local_size_y = 3, local_size_z = 1) in;\n"
+        "void main()\n"
+        "{\n"
+        "    int[gl_WorkGroupSize.x] a = int[5](0, 0, 0, 0, 0);\n"
+        "    int[gl_WorkGroupSize.y] b = int[3](0, 0, 0);\n"
+        "    int[gl_WorkGroupSize.z] c = int[1](0);\n"
+        "}\n";
+    if (!compile(shaderString))
+    {
+        FAIL() << "Shader compilation failed, expecting success " << mInfoLog;
+    }
+}
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/deqp.gypi
+++ b/gfx/angle/src/tests/deqp.gypi
@@ -844,16 +844,18 @@
             '<(deqp_path)/modules/egl/teglMakeCurrentPerfTests.cpp',
             '<(deqp_path)/modules/egl/teglMakeCurrentPerfTests.hpp',
             '<(deqp_path)/modules/egl/teglMemoryStressTests.cpp',
             '<(deqp_path)/modules/egl/teglMemoryStressTests.hpp',
             '<(deqp_path)/modules/egl/teglMultiContextTests.cpp',
             '<(deqp_path)/modules/egl/teglMultiContextTests.hpp',
             '<(deqp_path)/modules/egl/teglMultiThreadTests.cpp',
             '<(deqp_path)/modules/egl/teglMultiThreadTests.hpp',
+            '<(deqp_path)/modules/egl/teglMutableRenderBufferTests.cpp',
+            '<(deqp_path)/modules/egl/teglMutableRenderBufferTests.hpp',
             '<(deqp_path)/modules/egl/teglNativeColorMappingTests.cpp',
             '<(deqp_path)/modules/egl/teglNativeColorMappingTests.hpp',
             '<(deqp_path)/modules/egl/teglNativeCoordMappingTests.cpp',
             '<(deqp_path)/modules/egl/teglNativeCoordMappingTests.hpp',
             '<(deqp_path)/modules/egl/teglNegativeApiTests.cpp',
             '<(deqp_path)/modules/egl/teglNegativeApiTests.hpp',
             '<(deqp_path)/modules/egl/teglNegativePartialUpdateTests.cpp',
             '<(deqp_path)/modules/egl/teglNegativePartialUpdateTests.hpp',
@@ -883,16 +885,18 @@
             '<(deqp_path)/modules/egl/teglSwapBuffersWithDamageTests.hpp',
             '<(deqp_path)/modules/egl/teglSyncTests.cpp',
             '<(deqp_path)/modules/egl/teglSyncTests.hpp',
             '<(deqp_path)/modules/egl/teglTestCase.cpp',
             '<(deqp_path)/modules/egl/teglTestCase.hpp',
             '<(deqp_path)/modules/egl/teglTestPackage.cpp',
             '<(deqp_path)/modules/egl/teglTestPackage.hpp',
             '<(deqp_path)/modules/egl/teglTestPackageEntry.cpp',
+            '<(deqp_path)/modules/egl/teglThreadCleanUpTests.cpp',
+            '<(deqp_path)/modules/egl/teglThreadCleanUpTests.hpp',
             '<(deqp_path)/modules/egl/teglVGRenderUtil.cpp',
             '<(deqp_path)/modules/egl/teglVGRenderUtil.hpp',
         ],
         'deqp_libtester_decpp_sources':
         [
             '<(deqp_path)/framework/delibs/decpp/deArrayBuffer.cpp',
             '<(deqp_path)/framework/delibs/decpp/deBlockBuffer.cpp',
             '<(deqp_path)/framework/delibs/decpp/deCommandLine.cpp',
@@ -956,22 +960,26 @@
             '<(deqp_path)/framework/common/tcuFloatFormat.cpp',
             '<(deqp_path)/framework/common/tcuFunctionLibrary.cpp',
             '<(deqp_path)/framework/common/tcuFuzzyImageCompare.cpp',
             '<(deqp_path)/framework/common/tcuImageCompare.cpp',
             '<(deqp_path)/framework/common/tcuImageIO.cpp',
             '<(deqp_path)/framework/common/tcuInterval.cpp',
             '<(deqp_path)/framework/common/tcuPlatform.cpp',
             '<(deqp_path)/framework/common/tcuRandomValueIterator.cpp',
+            '<(deqp_path)/framework/common/tcuRasterizationVerifier.cpp',
+            '<(deqp_path)/framework/common/tcuRasterizationVerifier.hpp',
             '<(deqp_path)/framework/common/tcuRenderTarget.cpp',
             '<(deqp_path)/framework/common/tcuResource.cpp',
             '<(deqp_path)/framework/common/tcuResultCollector.cpp',
             '<(deqp_path)/framework/common/tcuRGBA.cpp',
             '<(deqp_path)/framework/common/tcuStringTemplate.cpp',
             '<(deqp_path)/framework/common/tcuSurface.cpp',
+            '<(deqp_path)/framework/common/tcuSurfaceAccess.cpp',
+            '<(deqp_path)/framework/common/tcuSurfaceAccess.hpp',
             '<(deqp_path)/framework/common/tcuTestCase.cpp',
             '<(deqp_path)/framework/common/tcuTestContext.cpp',
             '<(deqp_path)/framework/common/tcuTestHierarchyIterator.cpp',
             '<(deqp_path)/framework/common/tcuTestHierarchyUtil.cpp',
             '<(deqp_path)/framework/common/tcuTestLog.cpp',
             '<(deqp_path)/framework/common/tcuTestPackage.cpp',
             '<(deqp_path)/framework/common/tcuTestSessionExecutor.cpp',
             '<(deqp_path)/framework/common/tcuTexCompareVerifier.cpp',
@@ -1051,16 +1059,18 @@
             '<(deqp_path)/framework/opengl/gluRenderContext.cpp',
             '<(deqp_path)/framework/opengl/gluShaderLibrary.cpp',
             '<(deqp_path)/framework/opengl/gluShaderProgram.cpp',
             '<(deqp_path)/framework/opengl/gluShaderUtil.cpp',
             '<(deqp_path)/framework/opengl/gluStateReset.cpp',
             '<(deqp_path)/framework/opengl/gluStrUtil.cpp',
             '<(deqp_path)/framework/opengl/gluTexture.cpp',
             '<(deqp_path)/framework/opengl/gluTextureUtil.cpp',
+            '<(deqp_path)/framework/opengl/gluTextureTestUtil.cpp',
+            '<(deqp_path)/framework/opengl/gluTextureTestUtil.hpp',
             '<(deqp_path)/framework/opengl/gluVarType.cpp',
             '<(deqp_path)/framework/opengl/gluVarTypeUtil.cpp',
             '<(deqp_path)/framework/opengl/simplereference/sglrContext.cpp',
             '<(deqp_path)/framework/opengl/simplereference/sglrContextUtil.cpp',
             '<(deqp_path)/framework/opengl/simplereference/sglrContextWrapper.cpp',
             '<(deqp_path)/framework/opengl/simplereference/sglrGLContext.cpp',
             '<(deqp_path)/framework/opengl/simplereference/sglrReferenceContext.cpp',
             '<(deqp_path)/framework/opengl/simplereference/sglrReferenceUtils.cpp',
@@ -1125,17 +1135,16 @@
             '<(deqp_path)/modules/glshared/glsInteractionTestUtil.cpp',
             '<(deqp_path)/modules/glshared/glsLifetimeTests.cpp',
             '<(deqp_path)/modules/glshared/glsLongStressCase.cpp',
             '<(deqp_path)/modules/glshared/glsLongStressTestUtil.cpp',
             '<(deqp_path)/modules/glshared/glsMemoryStressCase.cpp',
             '<(deqp_path)/modules/glshared/glsRandomShaderCase.cpp',
             '<(deqp_path)/modules/glshared/glsRandomShaderProgram.cpp',
             '<(deqp_path)/modules/glshared/glsRandomUniformBlockCase.cpp',
-            '<(deqp_path)/modules/glshared/glsRasterizationTestUtil.cpp',
             '<(deqp_path)/modules/glshared/glsSamplerObjectTest.cpp',
             '<(deqp_path)/modules/glshared/glsScissorTests.cpp',
             '<(deqp_path)/modules/glshared/glsShaderConstExprTests.cpp',
             '<(deqp_path)/modules/glshared/glsShaderExecUtil.cpp',
             '<(deqp_path)/modules/glshared/glsShaderLibraryCase.cpp',
             '<(deqp_path)/modules/glshared/glsShaderLibrary.cpp',
             '<(deqp_path)/modules/glshared/glsShaderPerformanceCase.cpp',
             '<(deqp_path)/modules/glshared/glsShaderPerformanceMeasurer.cpp',
@@ -1163,16 +1172,21 @@
         'deqp_libtester_sources_unix':
         [
             '<(deqp_path)/framework/delibs/dethread/unix/deMutexUnix.c',
             '<(deqp_path)/framework/delibs/dethread/unix/deNamedSemaphoreUnix.c',
             '<(deqp_path)/framework/delibs/dethread/unix/deSemaphoreUnix.c',
             '<(deqp_path)/framework/delibs/dethread/unix/deThreadLocalUnix.c',
             '<(deqp_path)/framework/delibs/dethread/unix/deThreadUnix.c',
         ],
+        'deqp_libtester_sources_android':
+        [
+            '<(deqp_path)/framework/platform/android/tcuAndroidInternals.cpp',
+            '<(deqp_path)/framework/platform/android/tcuAndroidInternals.hpp',
+        ],
         'deqp_gpu_test_expectations_sources':
         [
             'third_party/gpu_test_expectations/gpu_info.cc',
             'third_party/gpu_test_expectations/gpu_info.h',
             'third_party/gpu_test_expectations/gpu_test_config.cc',
             'third_party/gpu_test_expectations/gpu_test_config.h',
             'third_party/gpu_test_expectations/gpu_test_expectations_parser.cc',
             'third_party/gpu_test_expectations/gpu_test_expectations_parser.h',
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/deqp_support/angle_deqp_gtest.cpp
+++ b/gfx/angle/src/tests/deqp_support/angle_deqp_gtest.cpp
@@ -47,18 +47,22 @@ const char *g_TestExpectationsFiles[] = 
 
 using APIInfo = std::pair<const char *, gpu::GPUTestConfig::API>;
 
 const APIInfo g_eglDisplayAPIs[] = {
     {"angle-d3d9", gpu::GPUTestConfig::kAPID3D9},
     {"angle-d3d11", gpu::GPUTestConfig::kAPID3D11},
     {"angle-gl", gpu::GPUTestConfig::kAPIGLDesktop},
     {"angle-gles", gpu::GPUTestConfig::kAPIGLES},
+    {"angle-null", gpu::GPUTestConfig::kAPIUnknown },
 };
 
+const char *g_deqpEGLString = "--deqp-egl-display-type=";
+const char *g_angleEGLString = "--use-angle=";
+
 const APIInfo *g_initAPI = nullptr;
 
 // Returns the default API for a platform.
 const char *GetDefaultAPIName()
 {
 #if defined(ANGLE_PLATFORM_WINDOWS)
     return "angle-d3d11";
 #elif defined(ANGLE_PLATFORM_APPLE) || defined(ANGLE_PLATFORM_LINUX)
@@ -312,29 +316,28 @@ unsigned int dEQPTest<TestModuleIndex>::
 // static
 template <size_t TestModuleIndex>
 void dEQPTest<TestModuleIndex>::SetUpTestCase()
 {
     sPasses           = 0;
     sFails            = 0;
     sUnexpectedPasses = 0;
 
-    int argc = 0;
     std::vector<const char *> argv;
 
     // Reserve one argument for the binary name.
-    argc++;
     argv.push_back("");
 
     // Add init api.
-    argc++;
-    argv.push_back(g_initAPI ? g_initAPI->first : GetDefaultAPIName());
+    const char *targetApi    = g_initAPI ? g_initAPI->first : GetDefaultAPIName();
+    std::string apiArgString = std::string(g_deqpEGLString) + targetApi;
+    argv.push_back(apiArgString.c_str());
 
     // Init the platform.
-    if (!deqp_libtester_init_platform(argc, argv.data()))
+    if (!deqp_libtester_init_platform(static_cast<int>(argv.size()), argv.data()))
     {
         std::cout << "Aborting test due to dEQP initialization error." << std::endl;
         exit(1);
     }
 }
 
 // static
 template <size_t TestModuleIndex>
@@ -380,19 +383,16 @@ ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GL
 #ifdef ANGLE_DEQP_GLES31_TESTS
 ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GLES31, 2);
 #endif
 
 #ifdef ANGLE_DEQP_EGL_TESTS
 ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_EGL, 3);
 #endif
 
-const char *g_deqpEGLString  = "--deqp-egl-display-type=";
-const char *g_angleEGLString = "--use-angle=";
-
 void HandleDisplayType(const char *displayTypeString)
 {
     std::stringstream argStream;
 
     if (g_initAPI)
     {
         std::cout << "Cannot specify two EGL displays!" << std::endl;
         exit(1);
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/deqp_support/deqp_gles2_test_expectations.txt
+++ b/gfx/angle/src/tests/deqp_support/deqp_gles2_test_expectations.txt
@@ -18,114 +18,75 @@
 // indicates a prefix matching.
 //
 // Examples:
 //  91530 MAC WIN LINUX : context_lost_restored = TIMEOUT
 //  91533 WIN : gl_min_uniforms = FAIL
 //  91531 MAC WIN LINUX : conformance_more_* = SKIP
 //  91532 MAC NVIDIA 0x0640 : tex_image_and_sub_image_2d_with_video = PASS FAIL
 
-// TODO(jmadill): Figure out why these fail on the bots, but not locally.
-1018 WIN : dEQP-GLES2.functional.shaders.invariance.highp.loop_2 = FAIL
-1018 WIN : dEQP-GLES2.functional.shaders.invariance.mediump.loop_2 = FAIL
-
 // Skip these tests due to timeouts
-1034 WIN LINUX MAC : dEQP-GLES2.functional.flush_finish.* = SKIP
+1034 DEBUG RELEASE : dEQP-GLES2.functional.flush_finish.* = SKIP
 
 // Don't run these tests for faster turnover
-998 WIN LINUX MAC : dEQP-GLES2.performance.* = SKIP
-998 WIN LINUX MAC : dEQP-GLES2.stress.* = SKIP
+998 DEBUG RELEASE : dEQP-GLES2.performance.* = SKIP
+998 DEBUG RELEASE : dEQP-GLES2.stress.* = SKIP
 
 // Tests that we fail because they're not in line with the WebGL spec
-1335 WIN LINUX MAC ANDROID : dEQP-GLES2.functional.shaders.preprocessor.conditional_inclusion.basic_2* = FAIL
+1335 DEBUG RELEASE : dEQP-GLES2.functional.shaders.preprocessor.conditional_inclusion.basic_2* = FAIL
+
+// Failures related to not supporting separate depth/stencil masks on D3D11.
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.random.* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.* = FAIL
 
 ////////////////////////////////////////////////////////////////////////////////
 //
 //  Temporary entries: they should be removed once the bugs are fixed.
 //
 ////////////////////////////////////////////////////////////////////////////////
 
-// Windows only failures
-
-// TODO(jmadill): triage these into temporary and permanent suppressions
+// Only fails in D3D11 32-bit.
+1418 D3D11 : dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z_and_neg_x_neg_y_neg_z = FAIL
 
-1027 WIN : dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 = FAIL
-1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 = FAIL
-1033 WIN : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
-1017 WIN : dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_tricky_dataflow_* = FAIL
-1017 WIN : dEQP-GLES2.functional.shaders.loops.while_constant_iterations.nested_tricky_dataflow_* = FAIL
-1017 WIN : dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.nested_tricky_dataflow_* = FAIL
-989 WIN : dEQP-GLES2.functional.shaders.preprocessor.pragmas.invalid_pragma_invalid_* = FAIL
-1018 WIN : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
-1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
-1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
-1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
-1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
-1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.* = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.* = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.random.* = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
-1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1418 WIN : dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z_and_neg_x_neg_y_neg_z = FAIL
+// Failures on the D3D11 bots that do not reproduce locally
+// TODO(jmadill): Figure out why these fail on the bots, but not locally.
+1108 D3D11 : dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_struct_array_fragment = FAIL
+1108 D3D11 : dEQP-GLES2.functional.shaders.invariance.highp.loop_2 = FAIL
+1108 D3D11 : dEQP-GLES2.functional.shaders.invariance.mediump.loop_2 = FAIL
 
-// Failures on the dEQP Windows bots that do not reproduce locally
-1108 WIN : dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_struct_array_fragment = FAIL
-
-// Linux only failures
-
-1051 LINUX : dEQP-GLES2.functional.shaders.functions.array_arguments.copy_global_inout_on_call_fragment = FAIL
-1051 LINUX : dEQP-GLES2.functional.shaders.functions.array_arguments.copy_global_inout_on_call_vertex = FAIL
-1019 LINUX : dEQP-GLES2.functional.texture.size.cube.256x256_rgba4444 = FAIL
-1019 LINUX : dEQP-GLES2.functional.texture.size.cube.512x512_rgba4444 = FAIL
-1020 LINUX : dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear* = FAIL
-1020 LINUX : dEQP-GLES2.functional.texture.mipmap.2d.projected.linear_linear* = FAIL
-
-// Failures on the Linux dEQP bot that do not appear on the workstation
-1143 LINUX : dEQP-GLES2.functional.shaders.random.all_features.vertex.13 = FAIL
-1143 LINUX : dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
-1143 LINUX : dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
-1143 LINUX : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
+// OpenGL desktop back-end failures
+1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8_alpha8 = FAIL
+1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8_alpha8 = FAIL
 
 // Mac specific failures
 1143 MAC : dEQP-GLES2.functional.shaders.scoping.valid.local_int_variable_hides_struct_type_* = FAIL
 1143 MAC : dEQP-GLES2.functional.shaders.scoping.valid.local_struct_variable_hides_struct_type_* = FAIL
 1143 MAC : dEQP-GLES2.functional.shaders.scoping.valid.function_parameter_hides_struct_type_* = FAIL
 1143 MAC : dEQP-GLES2.functional.shaders.random.trigonometric.vertex.65 = FAIL
 
 // Android only failures
@@ -164,59 +125,14 @@ 1489 ANDROID : dEQP-GLES2.functional.tex
 1489 ANDROID : dEQP-GLES2.functional.texture.mipmap.2d.generate.la88_nicest = FAIL
 1489 ANDROID : dEQP-GLES2.functional.texture.mipmap.cube.generate.a8_fastest = FAIL
 1489 ANDROID : dEQP-GLES2.functional.texture.mipmap.cube.generate.a8_nicest = FAIL
 1489 ANDROID : dEQP-GLES2.functional.texture.mipmap.cube.generate.l8_fastest = FAIL
 1489 ANDROID : dEQP-GLES2.functional.texture.mipmap.cube.generate.l8_nicest = FAIL
 1489 ANDROID : dEQP-GLES2.functional.texture.mipmap.cube.generate.la88_fastest = FAIL
 1489 ANDROID : dEQP-GLES2.functional.texture.mipmap.cube.generate.la88_nicest = FAIL
 
-// Windows and Linux failures
-1020 WIN LINUX : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
-
 // Windows Linux and Mac failures
-989 WIN LINUX MAC : dEQP-GLES2.functional.shaders.preprocessor.extensions.after_non_preprocessing_tokens_vertex = FAIL
-989 WIN LINUX MAC : dEQP-GLES2.functional.shaders.preprocessor.extensions.after_non_preprocessing_tokens_fragment = FAIL
-1015 WIN LINUX MAC : dEQP-GLES2.functional.shaders.functions.invalid.return_array_in_struct_vertex = FAIL
-1015 WIN LINUX MAC : dEQP-GLES2.functional.shaders.functions.invalid.return_array_in_struct_fragment = FAIL
-1016 WIN LINUX MAC : dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_vertex = FAIL
-1016 WIN LINUX MAC : dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_fragment = FAIL
-1016 WIN LINUX MAC : dEQP-GLES2.functional.shaders.scoping.invalid.redeclare_function_vertex = FAIL
-1016 WIN LINUX MAC : dEQP-GLES2.functional.shaders.scoping.invalid.redeclare_function_fragment = FAIL
-1020 WIN LINUX MAC : dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_nearest* = FAIL
-1020 WIN LINUX MAC : dEQP-GLES2.functional.texture.mipmap.2d.projected.linear_nearest* = FAIL
-1025 WIN LINUX MAC : dEQP-GLES2.functional.fragment_ops.random.* = FAIL
-1025 WIN LINUX MAC : dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.* = FAIL
-1027 WIN LINUX MAC : dEQP-GLES2.functional.fbo.render.repeated_clear.tex2d_rgb = FAIL
-1027 WIN LINUX MAC : dEQP-GLES2.functional.fbo.render.repeated_clear.tex2d_rgba = FAIL
-1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb_float = FAIL
-1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb_half_float_oes = FAIL
-1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgba_float = FAIL
-1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgba_half_float_oes = FAIL
 1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.srgb8 = FAIL
 1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8 = FAIL
-1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8_alpha8 = FAIL
 1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_short = FAIL
 1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_int = FAIL
 1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8 = FAIL
-1028 WIN LINUX MAC : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8_alpha8 = FAIL
-1128 WIN LINUX MAC : dEQP-GLES2.functional.negative_api.texture.compressedtexsubimage2d_invalid_size = FAIL
-1029 WIN LINUX MAC : dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_format = FAIL
-1029 WIN LINUX MAC : dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_internalformat = FAIL
-1029 WIN LINUX MAC : dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_type = FAIL
-1029 WIN LINUX MAC : dEQP-GLES2.functional.negative_api.texture.texsubimage2d_offset_allowed = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_float = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_float = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_vec2 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_vec2 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_vec3 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_vec3 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_vec4 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_vec4 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat2 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat2_offset_1 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_mat2 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat3 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat3_offset_1 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_mat3 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat4 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat4_offset_1 = FAIL
-1030 WIN LINUX MAC : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_mat4 = FAIL
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/deqp_support/deqp_gles31_test_expectations.txt
+++ b/gfx/angle/src/tests/deqp_support/deqp_gles31_test_expectations.txt
@@ -19,11510 +19,1255 @@
 //
 // Examples:
 //  91530 MAC WIN LINUX : context_lost_restored = TIMEOUT
 //  91533 WIN : gl_min_uniforms = FAIL
 //  91531 MAC WIN LINUX : conformance_more_* = SKIP
 //  91532 MAC NVIDIA 0x0640 : tex_image_and_sub_image_2d_with_video = PASS FAIL
 
 // Crashing Tests
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.negative.image.image2d.vertex_binding_over_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.negative.image.image2d.fragment_binding_over_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.negative.image.image2d.binding_contradictory_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.negative.image.image3d.vertex_binding_over_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.negative.image.image3d.fragment_binding_over_max_array = SKIP
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.negative.image.image3d.binding_contradictory_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.negative.image.image2d.vertex_binding_over_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.negative.image.image2d.fragment_binding_over_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.negative.image.image2d.binding_contradictory_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.negative.image.image3d.vertex_binding_over_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.negative.image.image3d.fragment_binding_over_max_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.negative.image.image3d.binding_contradictory_array = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.builtin_gl_position = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.default_block_struct_member = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment.default_block_struct_member = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.default_block_struct_member = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.* = SKIP
+1442 D3D11 : dEQP-GLES31.functional.stencil_texturing.* = SKIP
+
+// D3D11 Failing Tests
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_color_texture_samples_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_depth_texture_samples_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_integer_samples_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_vertex_attrib_relative_offset_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_vertex_attrib_bindings_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_vertex_attrib_stride_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_sample_mask_words_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_framebuffer_width_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_framebuffer_height_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_work_group_invocations_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_uniform_blocks_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_texture_image_units_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_shared_memory_size_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_uniform_components_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_atomic_counter_buffers_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_atomic_counters_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_image_uniforms_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_shader_storage_blocks_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_uniform_locations_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_atomic_counter_buffer_bindings_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_atomic_counter_buffer_size_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_atomic_counter_buffers_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_atomic_counters* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_image_units_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_image_uniforms_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_shader_storage_buffer_bindings_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_shader_storage_block_size_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_shader_storage_blocks_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_shader_output_resources_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_uniform_buffer_bindings_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_texture_image_units_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_work_group_count_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_work_group_size_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.indexed.max_compute_work_group_count_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.indexed.max_compute_work_group_size_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.texparameter* = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameter* = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.texture.texparameter* = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.async.case_4_log = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.async.case_5_callback = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_2 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_3 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_9 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_10 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_27 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_28 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_2 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_3 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_9 = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_10 = SKIP
 
-// Failing Tests
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_var.compute.num_work_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_var.compute.work_group_size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_var.compute.work_group_id = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_var.compute.local_invocation_id = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_var.compute.global_invocation_id = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_var.compute.local_invocation_index = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm2x16_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm2x16_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packhalf2x16_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackhalf2x16_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.int_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.int_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_lowp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_lowp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_mediump_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_mediump_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_highp_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_highp_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.modf.lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.modf.mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.modf.highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cross.lowp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cross.mediump_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.cross.highp_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.lowp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.mediump_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.highp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inverse.lowp_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.inverse.mediump_compute.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_fragment.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_fragment.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_fragment.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_fragment.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_fragment.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_fragment.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_fragment.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_fragment.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_vertex.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_vertex.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_vertex.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_vertex.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_fragment.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_fragment.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_fragment.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_fragment.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute.scalar = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.sampler2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.samplercube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.sampler2darray = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.sampler3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.sampler2dshadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.samplercubeshadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.sampler2darrayshadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isamplercube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler2darray = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.usampler2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.usamplercube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.usampler2darray = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.usampler3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.sampler2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.samplercube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.sampler2darray = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.sampler3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.sampler2dshadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.samplercubeshadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.sampler2darrayshadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.isampler2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.isamplercube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.isampler2darray = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.isampler3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.usampler2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.usamplercube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.usampler2darray = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.usampler3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_literal_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_literal_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_literal_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_expression_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_expression_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_expression_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_literal_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_literal_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_literal_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_expression_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_expression_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_expression_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_expression_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_expression_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_expression_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.functions.overloading.arrays_of_arrays_size_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.functions.overloading.arrays_of_arrays_size_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.float_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.float_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.int_3x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.int_3x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.int_4x4x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.int_4x4x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.bool_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.bool_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.bool_2x1x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.bool_2x1x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.struct_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.struct_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.struct_4x1x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.struct_4x1x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.vec3_4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.vec3_4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.ivec3_3x2x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.ivec3_3x2x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.bvec3_1x2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.bvec3_1x2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.high_dimensional_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit.high_dimensional_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.float_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.float_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.int_3x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.int_3x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.int_4x4x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.int_4x4x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.bool_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.bool_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.bool_2x1x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.bool_2x1x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.struct_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.struct_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.struct_4x1x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.struct_4x1x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.vec3_4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.vec3_4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.ivec3_3x2x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.ivec3_3x2x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.bvec3_1x2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.bvec3_1x2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.int_high_dimensional_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit.int_high_dimensional_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.int_2x2x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.int_2x2x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.bool_3x2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.bool_3x2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.vec3_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.vec3_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.struct_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.struct_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.ivec3_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.ivec3_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.bvec4_4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.bvec4_4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.int_2x2x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.int_2x2x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.bool_3x2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.bool_3x2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.vec3_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.vec3_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.struct_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.struct_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.ivec3_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.ivec3_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.bvec4_4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.bvec4_4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.int_2x2x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.int_2x2x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.bool_3x2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.bool_3x2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.vec3_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.vec3_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.struct_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.struct_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.ivec3_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.ivec3_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.bvec4_4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.bvec4_4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.int_2x2x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.int_2x2x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.bool_3x2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.bool_3x2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.vec3_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.vec3_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.struct_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.struct_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.ivec3_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.ivec3_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.bvec4_4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.bvec4_4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.int_2x2x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.int_2x2x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.bool_3x2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.bool_3x2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.vec3_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.vec3_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.struct_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.struct_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.ivec3_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.ivec3_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.bvec4_4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.bvec4_4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.int_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.int_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.bool_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.bool_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.struct_5x5x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.struct_5x5x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.vec3_1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.vec3_1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.ivec3_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.ivec3_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.bvec3_3x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.bvec3_3x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.int_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.int_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.bool_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.bool_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.struct_5x5x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.struct_5x5x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.vec3_1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.vec3_1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.ivec3_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.ivec3_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.bvec3_3x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.bvec3_3x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.int_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.int_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.bool_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.bool_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.struct_5x5x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.struct_5x5x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.vec3_1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.vec3_1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.ivec3_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.ivec3_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.bvec3_3x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.bvec3_3x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.int_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.int_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.bool_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.bool_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.struct_5x5x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.struct_5x5x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.vec3_1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.vec3_1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.ivec3_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.ivec3_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.bvec3_3x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.bvec3_3x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.float_3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.float_3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.int_2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.int_2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.bool_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.bool_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.struct_5x5x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.struct_5x5x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.vec3_1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.vec3_1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.ivec3_3x1x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.ivec3_3x1x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.bvec3_3x1_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.bvec3_3x1_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.mat3_3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.mat3_3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.mat3_3x3x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.mat3_3x3x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.mat3_3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit.mat3_3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.struct_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.struct_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.constant_expression_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.constant_expression_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.constant_expression_access_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.constant_expression_access_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.dynamic_expression_access_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.dynamic_expression_access_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.float_2_dimensions_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.float_2_dimensions_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.int_3_dimensions_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.int_3_dimensions_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.float_2_dimensions_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.float_2_dimensions_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.int_3_dimensions_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.int_3_dimensions_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_number_of_declarations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_order = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_member_name = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_member_unsized_sized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_member_array_size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_with_and_without_instance_name = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_block_array_size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_attribs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_uniform_vectors = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_output_vectors = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_input_vectors = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_uniform_vectors = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_draw_buffers = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_texture_image_units = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_texture_image_units = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_texture_image_units = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.min_program_texel_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_program_texel_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_image_units = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_image_uniforms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_image_uniforms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_image_uniforms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_image_uniforms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_shader_output_resources = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_uniform_components = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_texture_image_units = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_atomic_counters = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_atomic_counter_buffers = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_atomic_counters = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_atomic_counters = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_atomic_counters = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_atomic_counter_bindings = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_atomic_counter_buffers = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_atomic_counter_buffers = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_atomic_counter_buffers = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_atomic_counter_buffer_size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_work_group_count = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_work_group_size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.triangles = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.lines = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.points = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_4_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.lines_4_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_4_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.points_4_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_4_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.points_8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.lines_max_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_lines_max_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.points_max_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.value.wide_points_max_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_4_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_4_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_4_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_4_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_4_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_max_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_max_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdx = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_dfdy = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_max_samples_fwidth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_single_group = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.copy_ssbo_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.copy_ssbo_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.copy_ssbo_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_rw_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_rw_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_unsized_arr_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_unsized_arr_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.write_multiple_arr_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.write_multiple_arr_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.write_multiple_unsized_arr_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.write_multiple_unsized_arr_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_local_barrier_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_local_barrier_single_group = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_local_barrier_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_cmd_barrier_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.ssbo_cmd_barrier_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_var_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_var_single_group = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_var_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_var_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_atomic_op_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_atomic_op_single_group = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_atomic_op_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.shared_atomic_op_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_small = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_large = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_small = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_large = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.image_barrier_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.image_barrier_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.atomic_counter_single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.atomic_counter_single_group = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.atomic_counter_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.basic.atomic_counter_multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.float_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.float_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.float_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec2_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec2_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec2_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec3_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec3_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec3_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec4_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec4_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.vec4_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x3_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x3_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x3_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x4_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x4_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x4_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3x2_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3x2_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3x2_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3x4_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3x4_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat3x4_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x2_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x2_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x2_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x3_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x3_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x3_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.mat4_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.int_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.int_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.int_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec2_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec2_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec2_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec3_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec3_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec3_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec4_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec4_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.ivec4_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uint_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uint_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uint_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec2_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec2_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec2_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec3_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec3_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec3_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec4_lowp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec4_mediump = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.uvec4_highp = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.basic_type.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.float_1_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.float_64_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.float_1_64_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.float_1_1_64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.float_128_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.float_1_128_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.float_13_2_4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_1_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_64_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_1_64_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_1_1_64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_128_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_1_128_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_13_2_4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.mat4_1_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.mat4_64_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.mat4_1_64_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.mat4_1_1_64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.mat4_128_1_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.mat4_1_128_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.work_group_size.mat4_13_2_4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.add.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.add.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.add.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.add.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.add.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.add.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.min.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.min.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.min.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.min.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.min.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.min.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.max.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.max.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.max.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.max.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.max.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.max.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.and.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.and.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.and.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.and.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.and.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.and.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.or.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.or.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.or.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.or.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.or.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.or.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.xor.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.xor.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.xor.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.xor.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.xor.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.xor.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.exchange.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.exchange.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.exchange.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.exchange.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.exchange.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.exchange.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.compswap.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.compswap.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.compswap.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.compswap.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.compswap.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.shared_var.atomic.compswap.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.multiple_groups_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.small_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.large_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.large_offset_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.empty_command = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.multi_dispatch = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.multi_dispatch_reuse_command = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.single_invocation = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.multiple_groups = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.multiple_groups_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.small_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.large_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.large_offset_multiple_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.empty_command = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.multi_dispatch = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.multi_dispatch_reuse_command = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.first.first_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.first.first_3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.first.first_17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.indices.index_byte = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.indices.index_short = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.indices.index_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex.index_byte = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex.index_short = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex.index_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex.index_neg_byte = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex.index_neg_short = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex.index_neg_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop.single_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop.multiple_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop.instanced_attributes = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop.default_attribute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_arrays_indirect_grid_2x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_arrays_indirect_grid_5x5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_arrays_indirect_grid_10x10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_arrays_indirect_grid_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_arrays_indirect_grid_100x100 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_elements_indirect_grid_2x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_elements_indirect_grid_5x5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_elements_indirect_grid_10x10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_elements_indirect_grid_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.instancing.draw_elements_indirect_grid_100x100 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawarrays_compute_cmd = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawarrays_compute_data = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawarrays_compute_cmd_and_data = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_cmd = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_data = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_indices = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_cmd_and_data = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_cmd_and_indices = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_data_and_indices = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_cmd_and_data_and_indices = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.combined.drawarrays_compute_cmd_and_data = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.combined.drawelements_compute_cmd_and_data = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.combined.drawelements_compute_cmd_and_indices = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.combined.drawelements_compute_data_and_indices = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.combined.drawelements_compute_cmd_and_data_and_indices = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_100x100_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_200x200_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_500x500_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_1000x1000_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_1200x1200_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_1500x1500_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_100x100_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_200x200_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_500x500_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_1000x1000_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_1200x1200_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_1500x1500_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_100x100_drawcount_200 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_200x200_drawcount_800 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_500x500_drawcount_2500 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_1000x1000_drawcount_5000 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_100x100_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_200x200_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_500x500_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_1000x1000_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_1200x1200_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_1500x1500_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_100x100_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_200x200_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_500x500_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_1000x1000_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_1200x1200_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_1500x1500_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_100x100_drawcount_200 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_200x200_drawcount_800 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_500x500_drawcount_2500 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_1000x1000_drawcount_5000 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_100x100_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_200x200_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_500x500_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_100x100_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_200x200_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_500x500_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_100x100_drawcount_200 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_200x200_drawcount_800 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_500x500_drawcount_2500 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_100x100_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_200x200_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_500x500_drawcount_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_100x100_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_200x200_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_500x500_drawcount_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_100x100_drawcount_200 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_200x200_drawcount_800 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_500x500_drawcount_2500 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.25 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.27 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.28 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.29 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.30 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.31 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.35 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.36 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.37 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.38 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.39 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.40 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.42 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.43 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.44 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.45 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.46 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.47 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.48 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.49 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.50 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.51 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.52 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.53 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.54 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.55 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.57 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.random.61 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.command_bad_alignment_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.command_bad_alignment_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.command_bad_alignment_3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.command_offset_partially_in_buffer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.command_offset_not_in_buffer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.command_offset_not_in_buffer_unsigned32_wrap = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.command_offset_not_in_buffer_signed32_wrap = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.client_vertex_attrib_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.default_vao = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.invalid_mode_draw_arrays = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.invalid_mode_draw_elements = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.draw_indirect.negative.invalid_type_draw_elements = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.shared = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.shared_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.packed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.packed_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.std140 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.std140_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.std430 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.std430_instance_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.scalar_types.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.vector_types.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_types.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.25 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.26 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.27 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.28 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.29 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.30 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.31 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.33 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.35 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.36 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.37 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.38 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.39 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.40 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.41 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.42 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.43 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.44 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.45 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.46 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.47 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.48 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.49 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.25 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.26 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.27 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.28 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.29 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.30 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.31 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.33 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.35 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.36 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.37 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.38 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.39 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.40 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.41 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.42 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.43 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.44 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.45 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.46 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.47 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.49 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.add.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.add.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.add.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.add.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.add.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.add.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.min.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.min.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.min.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.min.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.min.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.min.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.max.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.max.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.max.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.max.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.max.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.max.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.and.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.and.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.and.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.and.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.and.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.and.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.or.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.or.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.or.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.or.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.or.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.or.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.xor.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.xor.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.xor.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.xor.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.xor.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.xor.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.exchange.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.exchange.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.exchange.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.exchange.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.exchange.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.exchange.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.compswap.lowp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.compswap.lowp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.compswap.mediump_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.compswap.mediump_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.compswap.highp_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.atomic.compswap.highp_int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.array_length.sized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.array_length.sized_writeonly_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.array_length.sized_readonly_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.array_length.unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.array_length.unsized_writeonly_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ssbo.array_length.unsized_readonly_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.row_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.shared.column_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.row_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.packed.column_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.row_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.shared.column_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.row_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.packed.column_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.row_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.3_level_array.std140.column_major_mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.shared_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.shared_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.shared_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.shared_instance_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.shared_instance_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.shared_instance_array_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.packed_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.packed_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.packed_instance_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.packed_instance_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.std140_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.std140_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.std140_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.std140_instance_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.std140_instance_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer.std140_instance_array_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.shared_instance_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.shared_instance_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.shared_instance_array_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.packed_instance_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.packed_instance_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.std140_instance_array_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.std140_instance_array_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.std140_instance_array_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.basic_type_arrays.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.basic_type_arrays.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.29 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.41 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_shared_buffer.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_shared_buffer.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_shared_buffer.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_shared_buffer.37 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.ubo.random.all_shared_buffer.38 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.load_store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.qualifiers.coherent_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.qualifiers.volatile_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.qualifiers.coherent_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.qualifiers.volatile_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.qualifiers.coherent_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.qualifiers.volatile_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.qualifiers.restrict = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32f_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32f_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16f_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16f_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32ui_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32ui_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16ui_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16ui_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32ui_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32i_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32i_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16i_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16i_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8i_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_12x34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_7x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.writeonly_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.writeonly_12x34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.writeonly_1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.writeonly_7x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_writeonly_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_writeonly_12x34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_writeonly_1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_writeonly_7x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba16f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.r32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba16ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.r32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba16i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.r32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.store.rgba8_snorm_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.r32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.r32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.r32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_snorm_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.qualifiers.coherent_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.qualifiers.volatile_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.qualifiers.coherent_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.qualifiers.volatile_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.qualifiers.coherent_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.qualifiers.volatile_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.qualifiers.restrict = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32f_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32f_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba16f_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba16f_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32f_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32f_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32f_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32f_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32f_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32f_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32ui_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32ui_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba16ui_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba16ui_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8ui_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32i_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32i_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba16i_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba16i_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_12x12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_7x7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.writeonly_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.writeonly_12x12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.writeonly_1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.writeonly_7x7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_writeonly_32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_writeonly_12x12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_writeonly_1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.cube.image_size.readonly_writeonly_7x7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba16f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.r32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba16ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.r32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba16i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.r32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.store.rgba8_snorm_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.r32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.r32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.r32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8_snorm_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.qualifiers.coherent_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.qualifiers.volatile_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.qualifiers.coherent_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.qualifiers.volatile_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.qualifiers.coherent_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.qualifiers.volatile_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.qualifiers.restrict = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba32f_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba32f_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16f_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16f_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32f_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32f_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32f_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32f_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32f_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32f_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba32ui_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba32ui_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16ui_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16ui_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8ui_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba32i_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba32i_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16i_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16i_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32i_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_32x32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_12x34x56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_1x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_7x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.writeonly_32x32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.writeonly_12x34x56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.writeonly_1x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.writeonly_7x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_writeonly_32x32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_writeonly_12x34x56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_writeonly_1x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_writeonly_7x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.r32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.r32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.r32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8_snorm_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba16f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32f_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba16ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32ui_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba16i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32i_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8_snorm_single_layer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.coherent_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.volatile_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.coherent_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.volatile_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.coherent_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.volatile_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.restrict = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32f_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32f_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba16f_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba16f_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32ui_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32ui_rgba32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba16ui_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba16ui_rgba16i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32ui_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32ui_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32ui_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32ui_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32ui_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32ui_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32i_rgba32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32i_rgba32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba16i_rgba16f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba16i_rgba16ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8i_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_rgba8_snorm = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_r32f = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_rgba8ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_r32ui = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_rgba8i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_r32i = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_rgba8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_32x32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_12x34x56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_1x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_7x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.writeonly_32x32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.writeonly_12x34x56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.writeonly_1x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.writeonly_7x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_writeonly_32x32x32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_writeonly_12x34x56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_writeonly_1x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_writeonly_7x1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.1_counter_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.4_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_branch.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.1_counter_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.4_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_branch.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.1_counter_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.4_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.dec_branch.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_branch.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.4_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_dec_branch.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.inc_dec_branch.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.4_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.1_counter_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.1_counter_1_call_5000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.1_counter_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.1_counter_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.1_counter_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.1_counter_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.4_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.4_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.4_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.4_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.4_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.8_counters_1_call_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.8_counters_5_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.8_counters_100_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.8_counters_100_calls_10_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec.8_counters_1_call_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec.8_counters_1_call_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec.8_counters_5_calls_1_thread = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec.8_counters_5_calls_1000_threads = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_clear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_draw = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.misc.compare_mode_effect = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.stencil_texturing.misc.base_level = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_1.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_2.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_2.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_2.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_2.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_2.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_2.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_3.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_3.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_3.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_3.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_3.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_3.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_4.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_4.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_4.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_4.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_4.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_4.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_8.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_8.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_8.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_8.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_8.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_8.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_10.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_10.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_10.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_10.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_10.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_10.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_12.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_12.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_12.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_12.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_12.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_12.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_13.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_13.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_13.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_13.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_13.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_13.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_16.sample_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_16.sample_mask_only = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_16.sample_mask_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_16.sample_mask_and_sample_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_16.sample_mask_and_sample_coverage_and_alpha_to_coverage = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.samples_16.sample_mask_non_effective_bits = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_tex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_rbo = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_fixed_state_tex_tex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_fixed_state_tex_rbo = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_non_zero_level = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_min_filter = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_mag_filter = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_wrap_s = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_wrap_t = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_wrap_r = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_min_lod = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_max_lod = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_compare_mode = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_compare_func = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_base_level = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_high_sample_count = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.multisample.negative.texture_zero_sample_count = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.incomplete.mipmap_incomplete = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.incomplete.mipmap_incomplete = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.incomplete.mipmap_incomplete = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.incomplete.mipmap_incomplete = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.incomplete.mipmap_incomplete = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.red_green_blue_alpha = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.green_blue_alpha_zero = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.base_level.level_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.base_level.level_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.boolean.sample_mask_isenabled = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.boolean.sample_mask_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.boolean.sample_mask_getinteger = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.boolean.sample_mask_getinteger64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.boolean.sample_mask_getfloat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.texture_binding_2d_multisample_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.texture_binding_2d_multisample_getinteger = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.texture_binding_2d_multisample_getinteger64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.texture_binding_2d_multisample_getfloat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.draw_indirect_buffer_binding_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.draw_indirect_buffer_binding_getinteger = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.draw_indirect_buffer_binding_getinteger64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.draw_indirect_buffer_binding_getfloat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.atomic_counter_buffer_binding_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.atomic_counter_buffer_binding_getinteger = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.atomic_counter_buffer_binding_getinteger64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.atomic_counter_buffer_binding_getfloat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.shader_storage_buffer_binding_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.shader_storage_buffer_binding_getinteger = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.shader_storage_buffer_binding_getinteger64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.shader_storage_buffer_binding_getfloat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.dispatch_indirect_buffer_binding_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.dispatch_indirect_buffer_binding_getinteger = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.dispatch_indirect_buffer_binding_getinteger64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.dispatch_indirect_buffer_binding_getfloat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.program_pipeline_binding_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.program_pipeline_binding_getinteger = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.program_pipeline_binding_getinteger64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.integer.program_pipeline_binding_getfloat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.sample_mask_value_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.sample_mask_value_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.sample_mask_value_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_binding_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_binding_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_binding_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_start_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_start_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_start_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_size_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_size_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_size_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_binding_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_binding_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_binding_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_start_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_start_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_start_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_size_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_size_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_size_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_name_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_name_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_name_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_level_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_level_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_level_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_layered_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_layered_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_layered_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_layer_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_layer_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_layer_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_access_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_access_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_access_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_format_getbooleani_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_format_getintegeri_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.indexed.image_binding_format_getinteger64i_v = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d.depth_stencil_mode_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d.depth_stencil_mode_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_3d.depth_stencil_mode_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_3d.depth_stencil_mode_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_array.depth_stencil_mode_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_array.depth_stencil_mode_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_cube_map.depth_stencil_mode_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_cube_map.depth_stencil_mode_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.is_texture = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_r_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_r_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_g_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_g_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_b_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_b_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_a_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_swizzle_a_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_base_level_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_base_level_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_max_level_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_max_level_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.depth_stencil_mode_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.depth_stencil_mode_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.samples_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.samples_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.fixed_sample_locations_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.fixed_sample_locations_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.width_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.width_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.height_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.height_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.depth_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.depth_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.internal_format_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.internal_format_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.red_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.red_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.green_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.green_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.blue_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.blue_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.alpha_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.alpha_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.depth_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.depth_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.stencil_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.stencil_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.shared_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.shared_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.red_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.red_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.green_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.green_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.blue_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.blue_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.alpha_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.alpha_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.depth_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.depth_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.compressed_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d.compressed_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.samples_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.samples_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.fixed_sample_locations_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.fixed_sample_locations_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.width_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.width_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.height_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.height_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.depth_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.depth_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.internal_format_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.internal_format_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.red_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.red_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.green_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.green_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.blue_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.blue_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.alpha_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.alpha_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.depth_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.depth_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.stencil_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.stencil_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.shared_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.shared_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.red_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.red_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.green_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.green_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.blue_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.blue_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.alpha_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.alpha_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.depth_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.depth_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.compressed_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_3d.compressed_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.samples_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.samples_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.fixed_sample_locations_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.fixed_sample_locations_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.width_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.width_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.height_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.height_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.depth_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.depth_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.internal_format_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.internal_format_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.red_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.red_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.green_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.green_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.blue_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.blue_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.alpha_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.alpha_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.depth_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.depth_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.stencil_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.stencil_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.shared_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.shared_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.red_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.red_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.green_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.green_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.blue_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.blue_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.alpha_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.alpha_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.depth_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.depth_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.compressed_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_array.compressed_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.samples_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.samples_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.fixed_sample_locations_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.fixed_sample_locations_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.width_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.width_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.height_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.height_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.depth_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.depth_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.internal_format_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.internal_format_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.red_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.red_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.green_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.green_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.blue_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.blue_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.alpha_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.alpha_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.depth_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.depth_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.stencil_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.stencil_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.shared_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.shared_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.red_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.red_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.green_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.green_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.blue_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.blue_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.alpha_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.alpha_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.depth_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.depth_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.compressed_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_cube_map.compressed_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.samples_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.samples_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.fixed_sample_locations_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.fixed_sample_locations_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.width_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.width_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.height_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.height_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.depth_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.depth_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.internal_format_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.internal_format_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.red_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.red_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.green_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.green_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.blue_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.blue_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.alpha_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.alpha_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.depth_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.depth_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.stencil_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.stencil_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.shared_size_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.shared_size_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.red_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.red_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.green_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.green_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.blue_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.blue_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.alpha_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.alpha_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.depth_type_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.depth_type_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.compressed_integer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.compressed_float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.shader.sampler_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgb10_a2ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r16i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r16ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r32i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r32ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg8i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg8ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg16i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg16ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg32i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg32ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba8i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba8ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba16i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba16ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba32i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba32ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.r8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rg8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgb8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgb565_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba4_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgb5_a1_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgb10_a2_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgb10_a2ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.srgb8_alpha8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.r8i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.r8ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.r16i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.r16ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.r32i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.r32ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rg8i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rg8ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rg16i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rg16ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rg32i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rg32ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba8i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba8ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba16i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba16ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba32i_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.rgba32ui_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.depth_component16_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.depth_component24_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.depth_component32f_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.depth24_stencil8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.depth32f_stencil8_samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.partial_query.num_sample_counts = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.internal_format.partial_query.samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_relative_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_binding_getvertexattribfv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_relative_offset_getvertexattribfv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_binding_getvertexattribiiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_relative_offset_getvertexattribiiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_binding_getvertexattribiuiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib.vertex_attrib_relative_offset_getvertexattribiuiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_divisor_getintegeri = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_offset_getintegeri = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_stride_getintegeri = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_buffer_getintegeri = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_divisor_getintegeri64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_offset_getintegeri64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_stride_getintegeri64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_buffer_getintegeri64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_divisor_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_offset_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_stride_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_buffer_getboolean = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_divisor_mixed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_offset_mixed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_stride_mixed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed.vertex_binding_buffer_mixed = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_width_get_framebuffer_parameteriv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_height_get_framebuffer_parameteriv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_samples_get_framebuffer_parameteriv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_fixed_sample_locations_get_framebuffer_parameteriv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program.program_separable_get_programiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program.compute_work_group_size_get_programiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program.active_atomic_counter_buffers_get_programiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program_pipeline.active_program_get_program_pipelineiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program_pipeline.vertex_shader_get_program_pipelineiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program_pipeline.fragment_shader_get_program_pipelineiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program_pipeline.compute_shader_get_program_pipelineiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program_pipeline.validate_status_get_program_pipelineiv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.state_query.program_pipeline.info_log = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.image_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.image_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.image_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.image_alias_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.image_alias_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_alias_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_alias_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_atomic_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_atomic_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_atomic_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_atomic_alias_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_atomic_alias_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.image_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.image_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.image_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.image_alias_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.image_alias_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_alias_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_alias_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_atomic_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_atomic_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_atomic_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_atomic_alias_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_atomic_alias_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_multiple_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_multiple_interleaved_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_multiple_unrelated_write_read_ordered = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_multiple_unrelated_write_read_non_ordered = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_multiple_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_multiple_interleaved_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_multiple_unrelated_write_read_ordered = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_multiple_unrelated_write_read_non_ordered = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_read_write = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_overwrite = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_multiple_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_multiple_interleaved_write_read = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_multiple_unrelated_write_read_ordered = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_multiple_unrelated_write_read_non_ordered = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_2_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_5_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_100_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_2_calls_4k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_5_calls_4k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_100_calls_4k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_2_calls_32k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_5_calls_32k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_100_calls_32k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_2_calls_32_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_5_calls_32_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_100_calls_32_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_2_calls_128_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_5_calls_128_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_100_calls_128_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_2_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_5_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_100_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_2_calls_32_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_5_calls_32_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_100_calls_32_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_2_calls_128_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_5_calls_128_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_100_calls_128_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_2_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_5_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_100_calls_1k_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.geometry_shading.query.geometry_linked_vertices_out = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.geometry_shading.query.geometry_linked_input_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.geometry_shading.query.geometry_linked_output_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.geometry_shading.query.geometry_shader_invocations = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding.elements_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding.elements_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding.elements_2_share_elements = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding.offset_elements_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding.offset_elements_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding.offset_elements_2_share_elements = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding.unaligned_offset_elements_1_aligned_elements = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings.basic = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings.zero_stride = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings.instanced = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings.aliasing_buffer_zero_stride = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings.aliasing_buffer_instanced = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_attribs_basic = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_attribs_instanced_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_attribs_instanced_attrib = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_api_change_buffer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_api_change_buffer_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_api_change_buffer_stride = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_api_change_binding_point = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.negative.vertex_attrib_format_large_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.negative.bind_vertex_buffer_large_stride = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.negative.bind_vertex_buffer_negative_stride = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.negative.bind_vertex_buffer_negative_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.negative.vertex_attrib_binding_invalid_attr = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.vertex_attribute_binding.negative.vertex_attrib_binding_invalid_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x3_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x3_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x3_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat2x4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x2_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x2_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x2_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat3x4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x2_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x2_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x2_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x3_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x3_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4x3_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.mat4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bool_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec2_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec3_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.bvec4_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic.samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.mat4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.mat4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.mat4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bool_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.bvec4_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.mat4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.mat4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.mat4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bool_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic_array.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic_array.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic_array.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_nested_structs_arrays.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_nested_structs_arrays.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_nested_structs_arrays.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x2_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x2_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x2_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat3x4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x2_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x2_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x2_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x3_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x3_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4x3_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.mat4_row_major_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.mat4_row_major_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.mat4_row_major_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic_array.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic_array.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic_array.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_nested_structs_arrays.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_nested_structs_arrays.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_nested_structs_arrays.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bool_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec2_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec3_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.bvec4_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic.samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bool_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.bvec4_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bool_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.bvec4_api_uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_basic_array.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_basic_array.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_basic_array.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_nested_structs_arrays.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_nested_structs_arrays.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_nested_structs_arrays.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec3_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic.samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.multiple_basic_array.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.multiple_basic_array.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.multiple_basic_array.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.multiple_nested_structs_arrays.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.multiple_nested_structs_arrays.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.by_value.render.multiple_nested_structs_arrays.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.multiple_basic_array.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.multiple_basic_array.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_full.multiple_basic_array.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.float_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.mat4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.int_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.uint_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.bool_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array.sampler2D_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.multiple_basic_array.vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.multiple_basic_array.fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.multiple_basic_array.both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.float_vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.float_vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.float_vec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.mat4_mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.mat4_mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.mat4_mat2_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.int_ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.int_ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.int_ivec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.uint_uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.uint_uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.uint_uvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.bool_bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.bool_bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.bool_bvec4_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.sampler2D_samplerCube_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.sampler2D_samplerCube_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_uniform.unused_uniforms.sampler2D_samplerCube_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_constant_separate_programs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_constant_separate_programs_add_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_constant_separate_programs_add_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_constant_separate_programs_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_constant_single_program = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_constant_single_program_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_uniform_separate_programs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_uniform_separate_programs_add_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_uniform_separate_programs_add_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_uniform_separate_programs_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_uniform_single_program = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.different_uniform_single_program_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_constant_separate_programs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_constant_separate_programs_add_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_constant_separate_programs_add_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_constant_separate_programs_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_uniform_separate_programs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_uniform_separate_programs_add_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_uniform_separate_programs_add_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.pipeline.same_uniform_separate_programs_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.program_uniform.separate_programs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.program_uniform.separate_programs_add_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.program_uniform.separate_programs_add_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.program_uniform.separate_programs_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.program_uniform.single_program = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.program_uniform.single_program_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.create_shader_program.separate_programs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.create_shader_program.separate_programs_add_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.create_shader_program.separate_programs_add_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.create_shader_program.separate_programs_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.create_shader_program.single_program_add_both = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_vertex_smooth_fragment_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_vertex_smooth_fragment_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_vertex_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_vertex_flat_fragment_flat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_vertex_centroid_fragment_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_vertex_centroid_fragment_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_vertex_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_fragment_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name_fragment_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_name = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_vertex_smooth_fragment_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_vertex_smooth_fragment_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_vertex_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_vertex_flat_fragment_flat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_vertex_centroid_fragment_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_vertex_centroid_fragment_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_vertex_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_fragment_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location_fragment_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.interface.same_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.25 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.26 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.27 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.28 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.29 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.30 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.31 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.33 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.35 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.36 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.37 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.38 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.39 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.40 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.41 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.42 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.43 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.44 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.45 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.46 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.47 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.48 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.49 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.50 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.51 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.52 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.53 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.54 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.55 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.56 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.57 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.58 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.59 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.60 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.61 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.62 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.63 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.65 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.66 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.67 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.68 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.69 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.70 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.71 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.72 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.73 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.74 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.75 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.76 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.77 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.78 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.79 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.80 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.81 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.82 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.83 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.84 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.85 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.86 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.87 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.88 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.89 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.90 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.91 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.92 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.93 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.94 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.95 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.96 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.97 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.98 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.99 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.100 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.101 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.102 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.103 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.104 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.105 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.106 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.107 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.108 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.109 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.110 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.111 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.112 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.113 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.114 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.115 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.116 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.117 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.118 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.119 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.120 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.121 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.122 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.123 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.124 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.125 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.126 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.random.127 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.api.current_program_priority = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.api.active_program_uniform = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.api.pipeline_programs = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.api.pipeline_active = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.missing_input = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.missing_output = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_precision = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_explicit_location_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_explicit_location_precision = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_implicit_explicit_location_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_implicit_explicit_location_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_implicit_explicit_location_3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.match_different_struct_names = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_struct_member_name = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_struct_member_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_struct_member_precision = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_struct_member_order = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_array_element_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_array_length = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_array_precision = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_qualifier_vertex_flat_fragment_none = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_qualifier_vertex_flat_fragment_smooth = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_qualifier_vertex_flat_fragment_centroid = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_qualifier_vertex_smooth_fragment_flat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.separate_shader.validation.varying.mismatch_qualifier_vertex_centroid_fragment_flat = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.isampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.isampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.usampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.basic.usampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.isampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.isampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.usampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.array.usampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.float_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.float_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.vec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.vec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.vec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.vec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.vec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.vec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.int_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.int_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.ivec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.ivec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.ivec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.ivec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.ivec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.ivec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uint_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uint_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.uvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bool_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bool_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bvec2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bvec2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bvec3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bvec3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bvec4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.bvec4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat2x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat2x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat2x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat2x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat3x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat3x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat3x4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat3x4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat4x2_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat4x2_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat4x3_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat4x3_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat4_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.mat4_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.sampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.sampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.isampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.isampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.usampler2D_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_array.usampler2D_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.struct.case_15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.nested_struct.case_15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.float_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.float_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.float_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.float_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec2_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec2_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec2_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec2_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec3_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec3_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec3_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec3_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec4_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec4_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec4_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.vec4_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.int_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.int_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.int_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.int_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec2_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec2_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec2_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec2_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec3_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec3_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec3_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec3_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec4_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec4_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec4_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.ivec4_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uint_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uint_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uint_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uint_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec2_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec2_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec2_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec2_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec3_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec3_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec3_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec3_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec4_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec4_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec4_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.uvec4_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bool_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bool_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bool_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bool_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec2_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec2_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec2_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec2_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec3_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec3_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec3_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec3_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec4_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec4_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec4_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.bvec4_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x3_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x3_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x3_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x3_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x4_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x4_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x4_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat2x4_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x2_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x2_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x2_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x2_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x4_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x4_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x4_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat3x4_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x2_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x2_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x2_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x2_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x3_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x3_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x3_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4x3_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.mat4_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.sampler2D_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.sampler2D_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.sampler2D_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.sampler2D_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.isampler2D_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.isampler2D_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.isampler2D_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.isampler2D_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.usampler2D_vertex_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.usampler2D_vertex_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.usampler2D_fragment_min = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.min_max.usampler2D_fragment_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.uniform_location.link.case_9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.compile_compute_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.primitive_bounding_box = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.geometry_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.tessellation_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.log.shader.compile_compute_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.primitive_bounding_box = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.geometry_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.tessellation_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_format_mismatch = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.framebuffer_texture2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.invalidate_sub_framebuffer = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.renderbuffer_storage_multisample = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_invalid_format = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_inequal_width_height_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_max_width_height = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copytexsubimage2d_invalid_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameteri = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterf = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameteriv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterfv = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage2d_invalid_size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texsubimage3d_neg_level = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texsubimage3d_neg_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copytexsubimage3d_invalid_offset = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage3d_invalid_buffer_target = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.compile_compute_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_format = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_i_format = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements_incomplete_primitive = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.primitive_bounding_box = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.geometry_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.tessellation_shader = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.debug.object_labels.program_pipeline = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.16x16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.16x64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.16x256 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.16x1024 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.64x16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.64x64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.64x256 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.64x1024 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.256x16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.256x64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.256x256 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.256x1024 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.1024x16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.1024x64 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.1024x256 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.size.1024x1024 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.1x1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.3x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.15x15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.17x17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.31x31 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.33x33 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.63x63 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.65x65 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.127x127 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.129x129 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.255x255 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.257x257 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.511x511 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.513x513 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.1023x1023 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.1025x1025 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.2047x2047 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.15x511 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.127x15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.129x127 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.511x127 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.npot_size.2047x1025 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.multisample.samples0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.multisample.samples1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.multisample.samples2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.multisample.samples3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.multisample.samples4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.random.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms0_default_128x128ms1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms1_default_128x128ms0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms0_default_512x512ms2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms2_default_128x512ms0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.127x127ms0_default_129x129ms0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.17x512ms4_default_16x16ms2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.2048x2048ms4_default_1x1ms0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.interaction.1x1ms0_default_2048x2048ms4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.maximums.width = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.maximums.height = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.maximums.size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.maximums.samples = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.no_attachments.maximums.all = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.fbo.completeness.no_attachments = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_limited_query.resource_name_query = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_limited_query.resource_query = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_struct_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block.var_array_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_struct_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block.var_array_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_struct_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block.var_array_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_struct_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.sampler2D_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.sampler2D_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bool_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bool_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bvec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bvec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bvec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.bvec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.vec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.vec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.vec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.vec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.vec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.vec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.ivec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.ivec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.ivec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.ivec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.ivec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates.ivec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bool_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bool_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bvec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bvec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bvec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.bvec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.vec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.vec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.vec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.vec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.vec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.vec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_cube_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_2d_array_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.isampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.isampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.isampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.usampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.usampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.usampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.usampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.image_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.image_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.image_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.iimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.iimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.iimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.uimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.uimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.uimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.array.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.array.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.block_index.default_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.block_index.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.block_index.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.block_index.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_cube_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_2d_array_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.isampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.isampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.isampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.usampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.usampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.usampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.usampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.image_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.image_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.image_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.iimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.iimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.iimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.uimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.uimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.uimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.named_block.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.named_block.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.named_block.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.named_block.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.named_block.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.aggregates.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.aggregates.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.aggregates.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.unnamed_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.unnamed_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.unnamed_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.block_array.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.block_array.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.name_length.block_array.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_cube_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_2d_array_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.isampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.isampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.isampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.usampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.usampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.usampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.usampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.image_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.image_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.image_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.iimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.iimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.iimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.uimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.aggregates.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.sampler = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.sampler_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.sampler_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.sampler = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.sampler_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.sampler_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.sampler = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.sampler_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.sampler_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.sampler = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.sampler_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.sampler_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.uniform_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.uniform_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.uniform_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.sampler = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.sampler_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.sampler_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.uniform_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.uniform_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.uniform_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.sampler = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.sampler_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.sampler_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block.atomic_uint_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.uniform_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.uniform_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.uniform_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_2d_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_cube_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_2d_array_shadow = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.isampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.isampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.isampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.usampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.usampler_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.usampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.usampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.sampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.isampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.usampler_2d_ms = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.image_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.image_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.image_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.iimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.iimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.iimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uimage_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uimage_cube = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.uimage_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.image_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.iimage_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array.atomic_uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.sampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.sampler_2d_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.sampler_3d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct.isampler_2d = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.25 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.26 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.27 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.28 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.29 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.30 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.31 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.33 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.35 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.36 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.37 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.38 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform.random.39 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list.block_array_single_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.active_variables.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.active_variables.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.active_variables.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding.named_block_explicit_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding.unnamed_block_explicit_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding.block_array_explicit_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_data_size.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_data_size.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_data_size.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.name_length.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.name_length.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.name_length.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.name_length.block_array_single_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.compute.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.compute.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.compute.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_vertex.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_vertex.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_vertex.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_fragment.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_fragment.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_fragment.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_vertex.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_vertex.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_vertex.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_fragment.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_fragment.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_fragment.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.resource_list = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.active_variables = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.buffer_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.buffer_data_size = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by_compute = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by_separable_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by_separable_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by_vertex_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by_vertex_fragment_only_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by_vertex_fragment_only_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.vertex_fragment.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_vertex.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.compute.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.array_size.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_fragment.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.vertex_fragment.var_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_vertex.var_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment.var_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment.var_struct_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment.var_array_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.name_length.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_fragment.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.referenced_by.referenced_by_vertex_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.referenced_by.referenced_by_separable_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.referenced_by.referenced_by_separable_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.vertex_fragment.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.vertex_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_fragment.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.compute.empty = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.array_size.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.array_size.vertex_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_vertex.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_vertex.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment.var_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment.var_array_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex.var_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex.var_struct_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex.var_array_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment.var_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment.var_array_explicit_location = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.name_length.vertex_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.name_length.vertex_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_vertex.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_vertex.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_vertex.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_fragment.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_fragment.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.referenced_by.referenced_by_vertex_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.referenced_by.referenced_by_separable_vertex = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.referenced_by.referenced_by_separable_fragment = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.builtin_gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.default_block_basic_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.default_block_struct_member = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.default_block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.default_block_array_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex.builtin_gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex.default_block_basic_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex.default_block_struct_member = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex.default_block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex.default_block_array_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment.builtin_gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment.default_block_basic_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment.default_block_struct_member = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment.default_block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment.default_block_array_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex.builtin_gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex.default_block_basic_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex.default_block_struct_member = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex.default_block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex.default_block_array_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.builtin_gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.default_block_basic_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.default_block_struct_member = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.default_block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment.default_block_array_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex.builtin_gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex.default_block_basic_type = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex.default_block_struct_member = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex.default_block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex.default_block_array_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.builtin.gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.whole_array.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.builtin.gl_position = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.whole_array.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_struct_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block.var_array_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_struct_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block.var_array_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_struct_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array.var_array_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bool_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bool_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bvec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bvec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bvec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.bvec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.vec4_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.vec4_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.vec4_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.vec4_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.ivec2_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.ivec2_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.ivec2_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates.ivec2_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bool_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bool_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bvec3_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bvec3_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bvec3_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.bvec3_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.vec4_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.vec4_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.vec4_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.vec4_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.ivec2_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.ivec2_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.ivec2_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates.ivec2_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.bvec3_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.bvec3_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.vec4_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.vec4_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.ivec2_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized.ivec2_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.block_index.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.block_index.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.block_index.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_unsized_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_unsized_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float_unsized_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.named_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.named_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.named_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.named_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.named_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.named_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.named_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.unnamed_block.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.unnamed_block.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.unnamed_block.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.block_array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.block_array.float_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.block_array.float_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_struct_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block.var_array_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_struct_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block.var_array_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_struct_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array.var_array_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_struct_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block.var_array_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_struct_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block.var_array_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_struct_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_array_struct = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_struct_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_array_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_struct_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_struct_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array.var_array_array_unsized_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.vec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.ivec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.ivec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.uvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.uvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.bvec2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.bvec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat2x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat2x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat3x4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat4x3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.ivec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.uvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.bvec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.mat2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.mat3x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.mat3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.mat4x2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type.mat4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type.int = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type.uint = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type.bool = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type.vec3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type.vec4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.array.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.struct.float = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.0 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.1 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.2 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.3 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.4 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.5 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.6 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.7 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.8 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.9 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.10 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.11 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.12 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.13 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.14 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.15 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.16 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.17 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.18 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.19 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.20 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.21 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.22 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.23 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.24 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.25 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.26 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.27 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.28 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.29 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.30 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.31 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.32 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.33 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.34 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.35 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.36 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.37 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.38 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.buffer_variable.random.39 = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array_single_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.active_variables.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.active_variables.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.active_variables.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding.named_block_explicit_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding.unnamed_block_explicit_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding.block_array_explicit_binding = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length.block_array_single_element = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.compute.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.compute.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.compute.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_vertex.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_vertex.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_vertex.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_fragment.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_fragment.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_fragment.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_vertex.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_vertex.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_vertex.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_fragment.named_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_fragment.unnamed_block = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_fragment.block_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.vertex_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.vertex_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.vertex_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.vertex_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.vertex_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.fragment_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.fragment_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.fragment_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.fragment_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.fragment_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.vertex_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.vertex_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.vertex_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.vertex_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.vertex_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.fragment_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.fragment_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.fragment_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.fragment_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.fragment_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.vertex_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.vertex_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.vertex_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.vertex_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.vertex_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.fragment_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.fragment_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.fragment_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.fragment_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ubo.fragment_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.vertex_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.vertex_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.vertex_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.vertex_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.vertex_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_max_array = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_multiple = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_single = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_max = FAIL
-1442 DEBUG RELEASE : dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_multiple = FAIL
+// OpenGL and D3D11 Failing Tests
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_var.compute.num_work_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_var.compute.work_group_size = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_var.compute.work_group_id = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_var.compute.local_invocation_id = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_var.compute.global_invocation_id = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_var.compute.local_invocation_index = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.int_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uint_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec2_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec3_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm2x16_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm2x16_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packhalf2x16_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackhalf2x16_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.modf.lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.modf.mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.modf.highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cross.lowp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cross.mediump_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.cross.highp_compute = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.scalar = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat2x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat2x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat3x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat3x4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4x2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4x3 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.lowp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.mediump_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.highp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inverse.lowp_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.inverse.mediump_compute.mat2 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.opaque_type_indexing.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.functions.overloading.arrays_of_arrays_size_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.functions.overloading.arrays_of_arrays_size_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.float_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.float_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.int_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.int_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.bool_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.bool_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.struct_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.struct_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.mat3_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.mat3_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.constant_expression_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.length.constant_expression_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.constant_expression_access_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.constant_expression_access_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.dynamic_expression_access_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access.dynamic_expression_access_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.float_2_dimensions_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.float_2_dimensions_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.int_3_dimensions_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor.int_3_dimensions_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.float_2_dimensions_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.float_2_dimensions_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.int_3_dimensions_vertex = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor.int_3_dimensions_fragment = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_number_of_declarations = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_order = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_type = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_member_name = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_member_unsized_sized_array = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_member_array_size = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_with_and_without_instance_name = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.linkage.shader_storage_block.mismatch_block_array_size = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_attribs = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_uniform_vectors = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_output_vectors = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_input_vectors = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_uniform_vectors = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_draw_buffers = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_texture_image_units = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_texture_image_units = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_texture_image_units = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.min_program_texel_offset = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_program_texel_offset = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_image_units = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_image_uniforms = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_image_uniforms = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_image_uniforms = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_image_uniforms = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_shader_output_resources = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_uniform_components = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_texture_image_units = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_atomic_counters = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_atomic_counter_buffers = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_atomic_counters = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_atomic_counters = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_atomic_counters = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_atomic_counter_bindings = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_atomic_counter_buffers = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_fragment_atomic_counter_buffers = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_atomic_counter_buffers = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_atomic_counter_buffer_size = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_work_group_count = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.core.max_compute_work_group_size = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.shaders.helper_invocation.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.empty = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_single_group = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_multiple_invocations = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.copy_ssbo_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.copy_ssbo_multiple_invocations = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.copy_ssbo_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_rw_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_rw_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_unsized_arr_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_unsized_arr_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.write_multiple_arr_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.write_multiple_arr_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.write_multiple_unsized_arr_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.write_multiple_unsized_arr_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_local_barrier_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_local_barrier_single_group = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_local_barrier_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_cmd_barrier_single = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.ssbo_cmd_barrier_multiple = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_var_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_var_single_group = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_var_multiple_invocations = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_var_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_atomic_op_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_atomic_op_single_group = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_atomic_op_multiple_invocations = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.shared_atomic_op_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_small = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_large = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_small = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_large = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.image_barrier_single = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.image_barrier_multiple = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.atomic_counter_single_invocation = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.atomic_counter_single_group = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.atomic_counter_multiple_invocations = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.basic.atomic_counter_multiple_groups = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.shared_var.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.compute.indirect_dispatch.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.draw_indirect.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.draw_indirect.negative.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ssbo.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.2_level_array.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.3_level_array.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.2_level_struct_array.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.basic_type_arrays.4 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.basic_type_arrays.10 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.1 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.7 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.10 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.13 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.18 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.29 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_per_block_buffers.41 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_shared_buffer.1 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_shared_buffer.8 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_shared_buffer.22 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_shared_buffer.37 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.ubo.random.all_shared_buffer.38 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.image_load_store.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.atomic_counter.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_2d = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_2d_array = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_cube = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_2d = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_2d_array = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_cube = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_clear = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_draw = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.misc.compare_mode_effect = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.stencil_texturing.misc.base_level = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.texture.multisample.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.texture.gather.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.boolean.sample_mask_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.integer.texture_binding_2d_multisample_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.integer.atomic_counter_buffer_binding_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.integer.shader_storage_buffer_binding_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.integer.dispatch_indirect_buffer_binding_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.integer.program_pipeline_binding_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.indexed.sample_mask_value_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.indexed.image_binding* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture.texture_2d.depth_stencil_mode_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture.texture_cube_map.depth_stencil_mode_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture.texture_2d_array.depth_stencil_mode_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture.texture_3d.depth_stencil_mode_* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture_level.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.shader.sampler_type = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgb10_a2ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r8ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r16i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r16ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r32i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.r32ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg8i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg8ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg16i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg16ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg32i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rg32ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba8i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba8ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba16i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba16ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba32i_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.renderbuffer.rgba32ui_samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.partial_query.num_sample_counts = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.internal_format.partial_query.samples = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.vertex_attribute_binding.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_width_get_framebuffer_parameteriv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_height_get_framebuffer_parameteriv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_samples_get_framebuffer_parameteriv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_fixed_sample_locations_get_framebuffer_parameteriv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.program.program_separable_get_programiv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.program.compute_work_group_size_get_programiv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.program.active_atomic_counter_buffers_get_programiv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.state_query.program_pipeline.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.synchronization.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.geometry_shading.query.geometry_linked_vertices_out = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.geometry_shading.query.geometry_linked_input_type = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.geometry_shading.query.geometry_linked_output_type = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.geometry_shading.query.geometry_shader_invocations = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.vertex_attribute_binding.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.separate_shader.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.uniform_location.basic.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.uniform_location.array.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.uniform_location.nested_array.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.uniform_location.struct.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.uniform_location.nested_struct.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.uniform_location.min_max.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.uniform_location.link.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.error_filters.case_11 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.error_groups.case_11 = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer.bind_buffer_range = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.compile_compute_shader = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.primitive_bounding_box = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.geometry_shader = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.tessellation_shader = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.buffer.bind_buffer_range = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.shader.compile_compute_shader = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.primitive_bounding_box = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.geometry_shader = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.tessellation_shader = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.bind_buffer_range = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_format_mismatch = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.framebuffer_texture2d = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.invalidate_sub_framebuffer = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.renderbuffer_storage_multisample = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_invalid_format = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_inequal_width_height_cube = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_max_width_height = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copytexsubimage2d_invalid_offset = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copytexsubimage2d_texture_internalformat = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameteri = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterf = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameteriv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterfv = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage2d = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage2d_invalid_size = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texsubimage3d_neg_level = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texsubimage3d_neg_offset = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copytexsubimage3d_invalid_offset = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage3d = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage3d_invalid_buffer_target = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.compile_compute_shader = SKIP
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_format = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_i_format = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements_incomplete_primitive = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.primitive_bounding_box = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.geometry_shader = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.tessellation_shader = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.debug.object_labels.program_pipeline = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.fbo.no_attachments.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.fbo.completeness.no_attachments = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.program_interface_query.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.sampler.sampler2d.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.sampler.sampler3d.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.ubo.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.ssbo.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image2d.* = FAIL
+1442 OPENGL D3D11 : dEQP-GLES31.functional.layout_binding.image.image3d.* = FAIL
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/deqp_support/deqp_gles3_test_expectations.txt
+++ b/gfx/angle/src/tests/deqp_support/deqp_gles3_test_expectations.txt
@@ -164,16 +164,55 @@ 1096 WIN : dEQP-GLES3.functional.fragmen
 1096 WIN : dEQP-GLES3.functional.fragment_ops.random.* = FAIL
 1096 WIN : dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.* = FAIL
 1098 WIN : dEQP-GLES3.functional.uniform_api.random.8 = FAIL
 1098 WIN : dEQP-GLES3.functional.uniform_api.random.81 = FAIL
 1101 WIN : dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units = FAIL
 1101 WIN : dEQP-GLES3.functional.polygon_offset.fixed24_render_with_units = FAIL
 1101 WIN : dEQP-GLES3.functional.lifetime.attach.deleted_input.buffer_vertex_array = FAIL
 
+// Windows AMD specific failures
+1633 WIN AMD : dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_scale = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_stencil_only = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r11f_g11f_b10f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg32f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r32f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgb16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg8 = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgb10_a2 = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgba16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r8 = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba32f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r11f_g11f_b10f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg32f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r32f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgb16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg8 = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r8 = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgb10_a2 = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgb16f = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgb10_a2_nearest_mipmap_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgb565_nearest_mipmap_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgba16f_nearest_mipmap_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.2d.max_lod.nearest_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.2d.max_lod.linear_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.3d.max_lod.nearest_nearest = FAIL
+1633 WIN AMD : dEQP-GLES3.functional.texture.mipmap.3d.max_lod.linear_nearest = FAIL
+
 // Windows Intel-specific failures
 
 1349 WIN INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturelod.isamplercube_* = FAIL
 1349 WIN INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturelod.usamplercube_* = FAIL
 1349 WIN INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.isamplercube_vertex = FAIL
 1349 WIN INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usamplercube_vertex = FAIL
 1349 WIN INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usamplercube_fragment = FAIL
 1349 WIN INTEL : dEQP-GLES3.functional.texture.units.2_units.only_cube.0 = FAIL
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/deqp_support/tcuANGLEPlatform.cpp
+++ b/gfx/angle/src/tests/deqp_support/tcuANGLEPlatform.cpp
@@ -31,73 +31,94 @@
 namespace tcu
 {
 
 ANGLEPlatform::ANGLEPlatform()
 {
     angle::SetLowPriorityProcess();
 
 #if (DE_OS == DE_OS_WIN32)
-    std::vector<eglw::EGLAttrib> d3d11Attribs;
-    d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
-    d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE);
-    d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
-    d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
-    d3d11Attribs.push_back(EGL_NONE);
+    {
+        std::vector<eglw::EGLAttrib> d3d11Attribs;
+        d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
+        d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE);
+        d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
+        d3d11Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
+        d3d11Attribs.push_back(EGL_NONE);
 
-    auto *d3d11Factory = new ANGLENativeDisplayFactory(
-        "angle-d3d11", "ANGLE D3D11 Display", d3d11Attribs, &mEvents);
-    m_nativeDisplayFactoryRegistry.registerFactory(d3d11Factory);
+        auto *d3d11Factory = new ANGLENativeDisplayFactory(
+            "angle-d3d11", "ANGLE D3D11 Display", d3d11Attribs, &mEvents);
+        m_nativeDisplayFactoryRegistry.registerFactory(d3d11Factory);
+    }
 
-    std::vector<eglw::EGLAttrib> d3d9Attribs;
-    d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
-    d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE);
-    d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
-    d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
-    d3d9Attribs.push_back(EGL_NONE);
+    {
+        std::vector<eglw::EGLAttrib> d3d9Attribs;
+        d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
+        d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE);
+        d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
+        d3d9Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
+        d3d9Attribs.push_back(EGL_NONE);
 
-    auto *d3d9Factory = new ANGLENativeDisplayFactory(
-        "angle-d3d9", "ANGLE D3D9 Display", d3d9Attribs, &mEvents);
-    m_nativeDisplayFactoryRegistry.registerFactory(d3d9Factory);
+        auto *d3d9Factory = new ANGLENativeDisplayFactory(
+            "angle-d3d9", "ANGLE D3D9 Display", d3d9Attribs, &mEvents);
+        m_nativeDisplayFactoryRegistry.registerFactory(d3d9Factory);
+    }
 
-    std::vector<eglw::EGLAttrib> d3d1193Attribs;
-    d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
-    d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE);
-    d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
-    d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
-    d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE);
-    d3d1193Attribs.push_back(9);
-    d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE);
-    d3d1193Attribs.push_back(3);
-    d3d1193Attribs.push_back(EGL_NONE);
+    {
+        std::vector<eglw::EGLAttrib> d3d1193Attribs;
+        d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
+        d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE);
+        d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
+        d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
+        d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE);
+        d3d1193Attribs.push_back(9);
+        d3d1193Attribs.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE);
+        d3d1193Attribs.push_back(3);
+        d3d1193Attribs.push_back(EGL_NONE);
 
-    auto *d3d1193Factory = new ANGLENativeDisplayFactory(
-        "angle-d3d11-fl93", "ANGLE D3D11 FL9_3 Display", d3d1193Attribs, &mEvents);
-    m_nativeDisplayFactoryRegistry.registerFactory(d3d1193Factory);
+        auto *d3d1193Factory = new ANGLENativeDisplayFactory(
+            "angle-d3d11-fl93", "ANGLE D3D11 FL9_3 Display", d3d1193Attribs, &mEvents);
+        m_nativeDisplayFactoryRegistry.registerFactory(d3d1193Factory);
+    }
 #endif // (DE_OS == DE_OS_WIN32)
 
 #if defined(ANGLE_USE_OZONE) || (DE_OS == DE_OS_ANDROID)
-    std::vector<eglw::EGLAttrib> glesAttribs;
-    glesAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
-    glesAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE);
-    glesAttribs.push_back(EGL_NONE);
+    {
+        std::vector<eglw::EGLAttrib> glesAttribs;
+        glesAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
+        glesAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE);
+        glesAttribs.push_back(EGL_NONE);
 
-    auto *glesFactory = new ANGLENativeDisplayFactory(
-        "angle-gles", "ANGLE OpenGL ES Display", glesAttribs, &mEvents);
-    m_nativeDisplayFactoryRegistry.registerFactory(glesFactory);
+        auto *glesFactory = new ANGLENativeDisplayFactory(
+            "angle-gles", "ANGLE OpenGL ES Display", glesAttribs, &mEvents);
+        m_nativeDisplayFactoryRegistry.registerFactory(glesFactory);
+    }
 #endif
 
-    std::vector<eglw::EGLAttrib> glAttribs;
-    glAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
-    glAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE);
-    glAttribs.push_back(EGL_NONE);
+    {
+        std::vector<eglw::EGLAttrib> glAttribs;
+        glAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
+        glAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE);
+        glAttribs.push_back(EGL_NONE);
+
+        auto *glFactory = new ANGLENativeDisplayFactory(
+            "angle-gl", "ANGLE OpenGL Display", glAttribs, &mEvents);
+        m_nativeDisplayFactoryRegistry.registerFactory(glFactory);
+    }
 
-    auto *glFactory = new ANGLENativeDisplayFactory(
-        "angle-gl", "ANGLE OpenGL Display", glAttribs, &mEvents);
-    m_nativeDisplayFactoryRegistry.registerFactory(glFactory);
+    {
+        std::vector<eglw::EGLAttrib> nullAttribs;
+        nullAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
+        nullAttribs.push_back(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE);
+        nullAttribs.push_back(EGL_NONE);
+
+        auto *nullFactory = new ANGLENativeDisplayFactory(
+            "angle-null", "ANGLE NULL Display", nullAttribs, &mEvents);
+        m_nativeDisplayFactoryRegistry.registerFactory(nullFactory);
+    }
 
     m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry));
 
     // Add Null context type for use in generating case lists
     m_contextFactoryRegistry.registerFactory(new null::NullGLContextFactory());
 }
 
 ANGLEPlatform::~ANGLEPlatform()
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/ClearTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/ClearTest.cpp
@@ -2,17 +2,16 @@
 // Copyright 2015 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 "test_utils/ANGLETest.h"
 
 #include "random_utils.h"
-#include "Vector.h"
 
 using namespace angle;
 
 namespace
 {
 
 Vector4 RandomVec4(int seed, float minValue, float maxValue)
 {
@@ -21,20 +20,20 @@ Vector4 RandomVec4(int seed, float minVa
     return Vector4(
         rng.randomFloatBetween(minValue, maxValue), rng.randomFloatBetween(minValue, maxValue),
         rng.randomFloatBetween(minValue, maxValue), rng.randomFloatBetween(minValue, maxValue));
 }
 
 GLColor Vec4ToColor(const Vector4 &vec)
 {
     GLColor color;
-    color.R = static_cast<uint8_t>(vec.x * 255.0f);
-    color.G = static_cast<uint8_t>(vec.y * 255.0f);
-    color.B = static_cast<uint8_t>(vec.z * 255.0f);
-    color.A = static_cast<uint8_t>(vec.w * 255.0f);
+    color.R = static_cast<uint8_t>(vec.x() * 255.0f);
+    color.G = static_cast<uint8_t>(vec.y() * 255.0f);
+    color.B = static_cast<uint8_t>(vec.z() * 255.0f);
+    color.A = static_cast<uint8_t>(vec.w() * 255.0f);
     return color;
 };
 
 class ClearTestBase : public ANGLETest
 {
   protected:
     ClearTestBase() : mProgram(0)
     {
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/CopyTextureTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/CopyTextureTest.cpp
@@ -527,17 +527,17 @@ TEST_P(CopyTextureTest, UnmultiplyAlpha)
     EXPECT_PIXEL_COLOR_NEAR(0, 0, GLColor(255, 255, 255, 255), 1.0);
     EXPECT_PIXEL_COLOR_NEAR(1, 0, GLColor(255, 255, 255, 127), 1.0);
     EXPECT_PIXEL_COLOR_NEAR(0, 1, GLColor(127, 127, 127, 127), 1.0);
     EXPECT_PIXEL_COLOR_NEAR(1, 1, GLColor(255, 255, 255, 0), 1.0);
     EXPECT_GL_NO_ERROR();
 }
 
 // Test that unmultipying and premultiplying the alpha is the same as doing neither
-TEST_P(CopyTextureTest, UnmultiplyAndPremultplyAlpha)
+TEST_P(CopyTextureTest, UnmultiplyAndPremultiplyAlpha)
 {
     if (!checkExtensions())
     {
         return;
     }
 
     GLColor rgbaPixels[4] = {GLColor(255u, 255u, 255u, 255u), GLColor(127u, 127u, 127u, 127u),
                              GLColor(63u, 63u, 63u, 127u), GLColor(255u, 255u, 255u, 0u)};
@@ -554,13 +554,81 @@ TEST_P(CopyTextureTest, UnmultiplyAndPre
 
     EXPECT_PIXEL_COLOR_NEAR(0, 0, GLColor(255, 255, 255, 255), 1.0);
     EXPECT_PIXEL_COLOR_NEAR(1, 0, GLColor(127, 127, 127, 127), 1.0);
     EXPECT_PIXEL_COLOR_NEAR(0, 1, GLColor(63, 63, 63, 127), 1.0);
     EXPECT_PIXEL_COLOR_NEAR(1, 1, GLColor(255, 255, 255, 0), 1.0);
     EXPECT_GL_NO_ERROR();
 }
 
+// Test to ensure that CopyTexture works with LUMINANCE_ALPHA texture
+TEST_P(CopyTextureTest, LuminanceAlpha)
+{
+    if (!checkExtensions())
+    {
+        return;
+    }
+
+    uint8_t originalPixels[] = {163u, 67u};
+    GLColor expectedPixels(163u, 163u, 163u, 67u);
+
+    glBindTexture(GL_TEXTURE_2D, mTextures[0]);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 1, 1, 0, GL_LUMINANCE_ALPHA,
+                 GL_UNSIGNED_BYTE, &originalPixels);
+
+    glCopyTextureCHROMIUM(mTextures[0], mTextures[1], GL_RGBA, GL_UNSIGNED_BYTE, false, false,
+                          false);
+
+    EXPECT_GL_NO_ERROR();
+
+    EXPECT_PIXEL_COLOR_EQ(0, 0, expectedPixels);
+}
+
+// Test to ensure that CopyTexture works with LUMINANCE texture
+TEST_P(CopyTextureTest, Luminance)
+{
+    if (!checkExtensions())
+    {
+        return;
+    }
+
+    uint8_t originalPixels[] = {57u};
+    GLColor expectedPixels(57u, 57u, 57u, 255u);
+
+    glBindTexture(GL_TEXTURE_2D, mTextures[0]);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 1, 1, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE,
+                 &originalPixels);
+
+    glCopyTextureCHROMIUM(mTextures[0], mTextures[1], GL_RGBA, GL_UNSIGNED_BYTE, false, false,
+                          false);
+
+    EXPECT_GL_NO_ERROR();
+
+    EXPECT_PIXEL_COLOR_EQ(0, 0, expectedPixels);
+}
+
+// Test to ensure that CopyTexture works with ALPHA texture
+TEST_P(CopyTextureTest, Alpha)
+{
+    if (!checkExtensions())
+    {
+        return;
+    }
+
+    uint8_t originalPixels[] = {77u};
+    GLColor expectedPixels(0u, 0u, 0u, 77u);
+
+    glBindTexture(GL_TEXTURE_2D, mTextures[0]);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 1, 1, 0, GL_ALPHA, GL_UNSIGNED_BYTE, &originalPixels);
+
+    glCopyTextureCHROMIUM(mTextures[0], mTextures[1], GL_RGBA, GL_UNSIGNED_BYTE, false, false,
+                          false);
+
+    EXPECT_GL_NO_ERROR();
+
+    EXPECT_PIXEL_COLOR_EQ(0, 0, expectedPixels);
+}
+
 // Use this to select which configurations (e.g. which renderer, which GLES major version) these
 // tests should be run against.
 ANGLE_INSTANTIATE_TEST(CopyTextureTest, ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_OPENGLES());
 
 }  // namespace angle
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp
@@ -19,31 +19,16 @@ protected:
         setConfigGreenBits(8);
         setConfigBlueBits(8);
         setConfigAlphaBits(8);
         setConfigDepthBits(24);
         setConfigStencilBits(8);
     }
 };
 
-TEST_P(DiscardFramebufferEXTTest, ExtensionEnabled)
-{
-    EGLPlatformParameters platform = GetParam().eglParameters;
-
-    if (platform.renderer == EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE)
-    {
-        EXPECT_TRUE(extensionEnabled("EXT_discard_framebuffer"));
-    }
-    else
-    {
-        // Other platforms don't currently implement this extension
-        EXPECT_FALSE(extensionEnabled("EXT_discard_framebuffer"));
-    }
-}
-
 TEST_P(DiscardFramebufferEXTTest, DefaultFramebuffer)
 {
     if (!extensionEnabled("EXT_discard_framebuffer"))
     {
         std::cout << "Test skipped because EXT_discard_framebuffer is not available." << std::endl;
         return;
     }
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/GLSLTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/GLSLTest.cpp
@@ -1241,40 +1241,16 @@ TEST_P(GLSLTest, MaxMinusTwoVaryingVec4P
 
     GLint maxVaryings = 0;
     glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
 
     // Generate shader code that uses gl_FragCoord, gl_PointCoord and gl_PointSize.
     VaryingTestBase(0, 0, 0, 0, 0, 0, maxVaryings - 2, 0, true, true, true, true);
 }
 
-// Disabled because drivers are allowed to successfully compile shaders that have more than the
-// maximum number of varyings. (http://anglebug.com/1296)
-TEST_P(GLSLTest, DISABLED_MaxVaryingVec4PlusFragCoord)
-{
-    GLint maxVaryings = 0;
-    glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
-
-    // Generate shader code that uses gl_FragCoord, a special fragment shader variables.
-    // This test should fail, since we are really using (maxVaryings + 1) varyings.
-    VaryingTestBase(0, 0, 0, 0, 0, 0, maxVaryings, 0, true, false, false, false);
-}
-
-// Disabled because drivers are allowed to successfully compile shaders that have more than the
-// maximum number of varyings. (http://anglebug.com/1296)
-TEST_P(GLSLTest, DISABLED_MaxVaryingVec4PlusPointCoord)
-{
-    GLint maxVaryings = 0;
-    glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
-
-    // Generate shader code that uses gl_FragCoord, a special fragment shader variables.
-    // This test should fail, since we are really using (maxVaryings + 1) varyings.
-    VaryingTestBase(0, 0, 0, 0, 0, 0, maxVaryings, 0, false, true, false, false);
-}
-
 TEST_P(GLSLTest, MaxVaryingVec3)
 {
     GLint maxVaryings = 0;
     glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
 
     VaryingTestBase(0, 0, 0, 0, maxVaryings, 0, 0, 0, false, false, false, true);
 }
 
@@ -1375,66 +1351,16 @@ TEST_P(GLSLTest, MaxVaryingVec2Arrays)
 #endif
 
     GLint maxVaryings = 0;
     glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
 
     VaryingTestBase(0, 0, 0, maxVaryings, 0, 0, 0, 0, false, false, false, true);
 }
 
-// Disabled because drivers are allowed to successfully compile shaders that have more than the
-// maximum number of varyings. (http://anglebug.com/1296)
-TEST_P(GLSLTest, DISABLED_MaxPlusOneVaryingVec3)
-{
-    GLint maxVaryings = 0;
-    glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
-
-    VaryingTestBase(0, 0, 0, 0, maxVaryings + 1, 0, 0, 0, false, false, false, false);
-}
-
-// Disabled because drivers are allowed to successfully compile shaders that have more than the
-// maximum number of varyings. (http://anglebug.com/1296)
-TEST_P(GLSLTest, DISABLED_MaxPlusOneVaryingVec3Array)
-{
-    GLint maxVaryings = 0;
-    glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
-
-    VaryingTestBase(0, 0, 0, 0, 0, maxVaryings / 2 + 1, 0, 0, false, false, false, false);
-}
-
-// Disabled because drivers are allowed to successfully compile shaders that have more than the
-// maximum number of varyings. (http://anglebug.com/1296)
-TEST_P(GLSLTest, DISABLED_MaxVaryingVec3AndOneVec2)
-{
-    GLint maxVaryings = 0;
-    glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
-
-    VaryingTestBase(0, 0, 1, 0, maxVaryings, 0, 0, 0, false, false, false, false);
-}
-
-// Disabled because drivers are allowed to successfully compile shaders that have more than the
-// maximum number of varyings. (http://anglebug.com/1296)
-TEST_P(GLSLTest, DISABLED_MaxPlusOneVaryingVec2)
-{
-    GLint maxVaryings = 0;
-    glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
-
-    VaryingTestBase(0, 0, 2 * maxVaryings + 1, 0, 0, 0, 0, 0, false, false, false, false);
-}
-
-// Disabled because drivers are allowed to successfully compile shaders that have more than the
-// maximum number of varyings. (http://anglebug.com/1296)
-TEST_P(GLSLTest, DISABLED_MaxVaryingVec3ArrayAndMaxPlusOneFloatArray)
-{
-    GLint maxVaryings = 0;
-    glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryings);
-
-    VaryingTestBase(0, maxVaryings / 2 + 1, 0, 0, 0, 0, 0, maxVaryings / 2, false, false, false, false);
-}
-
 // Verify shader source with a fixed length that is less than the null-terminated length will compile.
 TEST_P(GLSLTest, FixedShaderLength)
 {
     GLuint shader = glCreateShader(GL_FRAGMENT_SHADER);
 
     const std::string appendGarbage = "abcasdfasdfasdfasdfasdf";
     const std::string source = "void main() { gl_FragColor = vec4(0, 0, 0, 0); }" + appendGarbage;
     const char *sourceArray[1] = { source.c_str() };
@@ -2422,16 +2348,58 @@ TEST_P(GLSLTest_ES3, FoldedInvalidLeftSh
         " color = vec4(float(diff));\n"
         "}\n";
 
     GLuint program = CompileProgram(mSimpleVSSource, fragmentShader);
     EXPECT_EQ(0u, program);
     glDeleteProgram(program);
 }
 
+// Test that literal infinity can be written out from the shader translator.
+// A similar test can't be made for NaNs, since ESSL 3.00.6 requirements for NaNs are very loose.
+TEST_P(GLSLTest_ES3, LiteralInfinityOutput)
+{
+    const std::string &fragmentShader =
+        "#version 300 es\n"
+        "precision highp float;\n"
+        "out vec4 out_color;\n"
+        "uniform float u;\n"
+        "void main()\n"
+        "{\n"
+        "   float infVar = 1.0e40 - u;\n"
+        "   bool correct = isinf(infVar) && infVar > 0.0;\n"
+        "   out_color = correct ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);\n"
+        "}\n";
+
+    ANGLE_GL_PROGRAM(program, mSimpleVSSource, fragmentShader);
+    drawQuad(program.get(), "inputAttribute", 0.5f);
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+}
+
+// Test that literal negative infinity can be written out from the shader translator.
+// A similar test can't be made for NaNs, since ESSL 3.00.6 requirements for NaNs are very loose.
+TEST_P(GLSLTest_ES3, LiteralNegativeInfinityOutput)
+{
+    const std::string &fragmentShader =
+        "#version 300 es\n"
+        "precision highp float;\n"
+        "out vec4 out_color;\n"
+        "uniform float u;\n"
+        "void main()\n"
+        "{\n"
+        "   float infVar = -1.0e40 + u;\n"
+        "   bool correct = isinf(infVar) && infVar < 0.0;\n"
+        "   out_color = correct ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);\n"
+        "}\n";
+
+    ANGLE_GL_PROGRAM(program, mSimpleVSSource, fragmentShader);
+    drawQuad(program.get(), "inputAttribute", 0.5f);
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+}
+
 }  // anonymous namespace
 
 // Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
 ANGLE_INSTANTIATE_TEST(GLSLTest,
                        ES2_D3D9(),
                        ES2_D3D11(),
                        ES2_D3D11_FL9_3(),
                        ES2_OPENGL(),
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/PointSpritesTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/PointSpritesTest.cpp
@@ -44,16 +44,24 @@ TEST_P(PointSpritesTest, PointCoordAndPo
 {
     // TODO(jmadill): figure out why this fails
     if (IsIntel() && GetParam() == ES2_D3D9())
     {
         std::cout << "Test skipped on Intel due to failures." << std::endl;
         return;
     }
 
+    // TODO(jmadill): Investigate potential AMD driver bug.
+    // http://anglebug.com/1643
+    if (IsAMD() && IsDesktopOpenGL() && IsWindows())
+    {
+        std::cout << "Test skipped on desktop GL AMD Windows." << std::endl;
+        return;
+    }
+
     const std::string fs = SHADER_SOURCE
     (
         precision mediump float;
         void main()
         {
             gl_FragColor = vec4(
                 gl_PointCoord.x,
                 gl_PointCoord.y,
@@ -149,16 +157,32 @@ TEST_P(PointSpritesTest, PointCoordAndPo
         }
     }
 }
 
 // Verify that drawing a point without enabling any attributes succeeds
 // https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/point-no-attributes.html
 TEST_P(PointSpritesTest, PointWithoutAttributesCompliance)
 {
+    // TODO(jmadill): Investigate potential AMD driver bug.
+    // http://anglebug.com/1643
+    if (IsAMD() && IsDesktopOpenGL() && IsWindows())
+    {
+        std::cout << "Test skipped on desktop GL AMD Windows." << std::endl;
+        return;
+    }
+
+    // TODO(jmadill): Figure out why this fails on Intel.
+    // http://anglebug.com/1346
+    if (IsIntel() && IsWindows() && (IsD3D11() || IsD3D9()))
+    {
+        std::cout << "Test skipped on Intel Windows D3D." << std::endl;
+        return;
+    }
+
     // clang-format off
     const std::string fs = SHADER_SOURCE
     (
         precision mediump float;
         void main()
         {
             gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
         }
@@ -186,16 +210,24 @@ TEST_P(PointSpritesTest, PointWithoutAtt
     // expect the center pixel to be green
     EXPECT_PIXEL_EQ((windowWidth - 1) / 2, (windowHeight - 1) / 2, 0, 255, 0, 255);
 }
 
 // This is a regression test for a graphics driver bug affecting end caps on roads in MapsGL
 // https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html
 TEST_P(PointSpritesTest, PointCoordRegressionTest)
 {
+    // TODO(jmadill): Investigate potential AMD driver bug.
+    // http://anglebug.com/1643
+    if (IsAMD() && IsDesktopOpenGL() && IsWindows())
+    {
+        std::cout << "Test skipped on desktop GL AMD Windows." << std::endl;
+        return;
+    }
+
     const std::string fs = SHADER_SOURCE
     (
         precision mediump float;
         varying vec4 v_color;
         void main()
         {
             // It seems as long as this mathematical expression references
             // gl_PointCoord, the fragment's color is incorrect.
@@ -271,16 +303,24 @@ TEST_P(PointSpritesTest, PointCoordRegre
 
     glDeleteBuffers(1, &vertexObject);
 }
 
 // Verify GL_VERTEX_PROGRAM_POINT_SIZE is enabled
 // https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/point-size.html
 TEST_P(PointSpritesTest, PointSizeEnabledCompliance)
 {
+    // TODO(jmadill): Investigate potential AMD driver bug.
+    // http://anglebug.com/1643
+    if (IsAMD() && IsDesktopOpenGL() && IsWindows())
+    {
+        std::cout << "Test skipped on desktop GL AMD Windows." << std::endl;
+        return;
+    }
+
     const std::string fs = SHADER_SOURCE
     (
         precision mediump float;
         varying vec4 color;
 
         void main()
         {
             gl_FragColor = color;
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/RendererTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/RendererTest.cpp
@@ -96,34 +96,52 @@ TEST_P(RendererTest, RequestedRendererCr
             {
                 found = true;
             }
         }
 
         ASSERT_TRUE(found);
     }
 
-    EGLint glesMajorVersion = GetParam().majorVersion;
+    if (platform.renderer == EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE)
+    {
+        ASSERT_TRUE(IsNULL());
+    }
 
-    // Ensure that the renderer string contains GL ES 3.0, if we requested a GL ES 3.0
-    if (glesMajorVersion == 3)
+    EGLint glesMajorVersion = GetParam().majorVersion;
+    EGLint glesMinorVersion = GetParam().minorVersion;
+
+    // Ensure that the renderer string contains the requested version number
+    if (glesMajorVersion == 3 && glesMinorVersion == 1)
+    {
+        ASSERT_NE(versionString.find(std::string("es 3.1")), std::string::npos);
+    }
+    else if (glesMajorVersion == 3 && glesMinorVersion == 0)
     {
         ASSERT_NE(versionString.find(std::string("es 3.0")), std::string::npos);
     }
-
-    // Ensure that the version string contains GL ES 2.0, if we requested GL ES 2.0
-    if (glesMajorVersion == 2)
+    else if (glesMajorVersion == 2 && glesMinorVersion == 0)
     {
         ASSERT_NE(versionString.find(std::string("es 2.0")), std::string::npos);
     }
+    else
+    {
+        FAIL() << "Unhandled GL ES client version.";
+    }
 }
 
 // Perform a simple operation (clear and read pixels) to verify the device is working
 TEST_P(RendererTest, SimpleOperation)
 {
+    if (IsNULL())
+    {
+        std::cout << "ANGLE NULL backend clears are not functional" << std::endl;
+        return;
+    }
+
     glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
     glClear(GL_COLOR_BUFFER_BIT);
     EXPECT_PIXEL_EQ(0, 0, 0, 255, 0, 255);
 }
 
 // Select configurations (e.g. which renderer, which GLES major version) these tests should be run against.
 
 ANGLE_INSTANTIATE_TEST(RendererTest,
@@ -201,10 +219,15 @@ ANGLE_INSTANTIATE_TEST(RendererTest,
                        ES2_OPENGLES(3, 0),
                        ES2_OPENGLES(3, 1),
                        ES2_OPENGLES(3, 2),
 
                        // ES2 on top of OpenGL ES 3.0 to 3.2
                        ES3_OPENGLES(),
                        ES3_OPENGLES(3, 0),
                        ES3_OPENGLES(3, 1),
-                       ES3_OPENGLES(3, 2));
+                       ES3_OPENGLES(3, 2),
+
+                       // All ES version on top of the NULL backend
+                       ES2_NULL(),
+                       ES3_NULL(),
+                       ES31_NULL());
 }
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/SixteenBppTextureTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/SixteenBppTextureTest.cpp
@@ -22,17 +22,17 @@ GLColor Convert565(const R5G6B5 &rgb565)
     R5G6B5::readColor(&colorf, &rgb565);
     Vector4 vecColor(colorf.red, colorf.green, colorf.blue, colorf.alpha);
     return GLColor(vecColor);
 }
 
 R5G6B5 Convert565(const GLColor &glColor)
 {
     const Vector4 &vecColor = glColor.toNormalizedVector();
-    gl::ColorF colorf(vecColor.x, vecColor.y, vecColor.z, vecColor.w);
+    gl::ColorF colorf(vecColor.x(), vecColor.y(), vecColor.z(), vecColor.w());
     R5G6B5 rgb565;
     R5G6B5::writeColor(&rgb565, &colorf);
     return rgb565;
 }
 
 class SixteenBppTextureTest : public ANGLETest
 {
   protected:
@@ -412,17 +412,17 @@ TEST_P(SixteenBppTextureTestES3, RGBA4Fr
     GLFramebuffer fbo;
     glBindFramebuffer(GL_FRAMEBUFFER, fbo.get());
 
     GLTexture tex;
     glBindTexture(GL_TEXTURE_2D, tex.get());
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA4, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex.get(), 0);
 
-    glClearColor(rawColor.x, rawColor.y, rawColor.z, rawColor.w);
+    glClearColor(rawColor.x(), rawColor.y(), rawColor.z(), rawColor.w());
     glClear(GL_COLOR_BUFFER_BIT);
 
     ASSERT_GL_NO_ERROR();
 
     GLenum colorReadFormat = GL_NONE;
     GLenum colorReadType   = GL_NONE;
     glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, reinterpret_cast<GLint *>(&colorReadFormat));
     glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, reinterpret_cast<GLint *>(&colorReadType));
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/TimerQueriesTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/TimerQueriesTest.cpp
@@ -306,19 +306,20 @@ TEST_P(TimerQueriesTest, TimeElapsedVali
 
     glEndQueryEXT(GL_TIME_ELAPSED_EXT);
     EXPECT_GL_ERROR(GL_INVALID_OPERATION);
 }
 
 // Tests timer queries operating under multiple EGL contexts with mid-query switching
 TEST_P(TimerQueriesTest, TimeElapsedMulticontextTest)
 {
-    if (IsAMD() && IsOpenGL() && IsWindows() && IsDebug())
+    if (IsAMD() && IsOpenGL() && IsWindows())
     {
-        // TODO(jmadill): Figure out why this test is flaky on Win/AMD/OpenGL/Debug.
+        // TODO(jmadill): Figure out why this test is flaky on Win/AMD/OpenGL.
+        // http://anglebug.com/1541
         std::cout << "Test skipped on Windows AMD OpenGL Debug." << std::endl;
         return;
     }
 
     if (!extensionEnabled("GL_EXT_disjoint_timer_query"))
     {
         std::cout << "Test skipped because GL_EXT_disjoint_timer_query is not available."
                   << std::endl;
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/TransformFeedbackTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/TransformFeedbackTest.cpp
@@ -1,17 +1,16 @@
 //
 // Copyright 2015 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 "test_utils/ANGLETest.h"
 #include "random_utils.h"
-#include "Vector.h"
 
 using namespace angle;
 
 namespace
 {
 
 class TransformFeedbackTest : public ANGLETest
 {
@@ -512,19 +511,19 @@ TEST_P(TransformFeedbackTest, MultiplePa
         EXPECT_GL_NO_ERROR();
     }
 }
 // Test that running multiple simultaneous queries and transform feedbacks from multiple EGL
 // contexts returns the correct results.  Helps expose bugs in ANGLE's virtual contexts.
 TEST_P(TransformFeedbackTest, MultiContext)
 {
 #if defined(ANGLE_PLATFORM_APPLE)
-    if ((IsNVIDIA() || IsAMD()) && GetParam() == ES3_OPENGL())
+    if ((IsNVIDIA() || IsAMD() || IsIntel()) && GetParam() == ES3_OPENGL())
     {
-        std::cout << "Test skipped on NVidia and AMD OpenGL on OSX." << std::endl;
+        std::cout << "Test skipped on NVidia, AMD and Intel OpenGL on OSX." << std::endl;
         return;
     }
 #endif
 
 #if defined(ANGLE_PLATFORM_LINUX)
     if (IsAMD() && GetParam() == ES3_OPENGL())
     {
         std::cout << "Test skipped on AMD OpenGL on Linux." << std::endl;
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/UniformBufferTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/UniformBufferTest.cpp
@@ -557,16 +557,58 @@ TEST_P(UniformBufferTest, VeryLarge)
 
     glUniformBlockBinding(mProgram, mUniformBufferIndex, 0);
     drawQuad(mProgram, "position", 0.5f);
 
     ASSERT_GL_NO_ERROR();
     EXPECT_PIXEL_NEAR(0, 0, 128, 191, 64, 255, 1);
 }
 
+// Test that readback from a very large uniform buffer works OK.
+TEST_P(UniformBufferTest, VeryLargeReadback)
+{
+    glClear(GL_COLOR_BUFFER_BIT);
+
+    // Generate some random data.
+    GLsizei bigSize = 4096 * 64;
+    std::vector<GLubyte> expectedData(bigSize);
+    for (GLsizei index = 0; index < bigSize; ++index)
+    {
+        expectedData[index] = static_cast<GLubyte>(index);
+    }
+
+    // Initialize the GL buffer.
+    glBindBuffer(GL_UNIFORM_BUFFER, mUniformBuffer);
+    glBufferData(GL_UNIFORM_BUFFER, bigSize, expectedData.data(), GL_STATIC_DRAW);
+
+    // Do a small update.
+    GLsizei smallSize = sizeof(float) * 4;
+    std::array<float, 4> floatData = {{0.5f, 0.75f, 0.25f, 1.0f}};
+    memcpy(expectedData.data(), floatData.data(), smallSize);
+
+    glBufferSubData(GL_UNIFORM_BUFFER, 0, smallSize, expectedData.data());
+
+    // Draw with the buffer.
+    glBindBufferBase(GL_UNIFORM_BUFFER, 0, mUniformBuffer);
+    glUniformBlockBinding(mProgram, mUniformBufferIndex, 0);
+    drawQuad(mProgram, "position", 0.5f);
+
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_NEAR(0, 0, 128, 191, 64, 255, 1);
+
+    // Read back the large buffer data.
+    const void *mapPtr = glMapBufferRange(GL_UNIFORM_BUFFER, 0, bigSize, GL_MAP_READ_BIT);
+    ASSERT_GL_NO_ERROR();
+    const GLubyte *bytePtr = reinterpret_cast<const GLubyte *>(mapPtr);
+    std::vector<GLubyte> actualData(bytePtr, bytePtr + bigSize);
+    EXPECT_EQ(expectedData, actualData);
+
+    glUnmapBuffer(GL_UNIFORM_BUFFER);
+}
+
 // Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
 ANGLE_INSTANTIATE_TEST(UniformBufferTest,
                        ES3_D3D11(),
                        ES3_D3D11_FL11_1(),
                        ES3_D3D11_FL11_1_REFERENCE(),
                        ES3_OPENGL(),
                        ES3_OPENGLES());
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/gl_tests/WebGLCompatibilityTest.cpp
+++ b/gfx/angle/src/tests/gl_tests/WebGLCompatibilityTest.cpp
@@ -25,38 +25,38 @@ class WebGLCompatibilityTest : public AN
         setConfigBlueBits(8);
         setConfigAlphaBits(8);
         setWebGLCompatibilityEnabled(true);
     }
 
     void SetUp() override
     {
         ANGLETest::SetUp();
-        glEnableExtensionANGLE = reinterpret_cast<PFNGLENABLEEXTENSIONANGLEPROC>(
-            eglGetProcAddress("glEnableExtensionANGLE"));
+        glRequestExtensionANGLE = reinterpret_cast<PFNGLREQUESTEXTENSIONANGLEPROC>(
+            eglGetProcAddress("glRequestExtensionANGLE"));
     }
 
     void TearDown() override { ANGLETest::TearDown(); }
 
-    PFNGLENABLEEXTENSIONANGLEPROC glEnableExtensionANGLE = nullptr;
+    PFNGLREQUESTEXTENSIONANGLEPROC glRequestExtensionANGLE = nullptr;
 };
 
 // Context creation would fail if EGL_ANGLE_create_context_webgl_compatibility was not available so
 // the GL extension should always be present
 TEST_P(WebGLCompatibilityTest, ExtensionStringExposed)
 {
     EXPECT_TRUE(extensionEnabled("GL_ANGLE_webgl_compatibility"));
 }
 
 // Verify that all extension entry points are available
 TEST_P(WebGLCompatibilityTest, EntryPoints)
 {
-    if (extensionEnabled("GL_ANGLE_webgl_compatibility"))
+    if (extensionEnabled("GL_ANGLE_request_extension"))
     {
-        EXPECT_NE(nullptr, eglGetProcAddress("glEnableExtensionANGLE"));
+        EXPECT_NE(nullptr, eglGetProcAddress("glRequestExtensionANGLE"));
     }
 }
 
 // WebGL 1 allows GL_DEPTH_STENCIL_ATTACHMENT as a valid binding point.  Make sure it is usable,
 // even in ES2 contexts.
 TEST_P(WebGLCompatibilityTest, DepthStencilBindingPoint)
 {
     GLRenderbuffer renderbuffer;
@@ -69,17 +69,17 @@ TEST_P(WebGLCompatibilityTest, DepthSten
                               renderbuffer.get());
 
     EXPECT_GL_NO_ERROR();
 }
 
 // Test that attempting to enable an extension that doesn't exist generates GL_INVALID_OPERATION
 TEST_P(WebGLCompatibilityTest, EnableExtensionValidation)
 {
-    EXPECT_EQ(GL_FALSE, glEnableExtensionANGLE("invalid_extension_string"));
+    glRequestExtensionANGLE("invalid_extension_string");
     EXPECT_GL_ERROR(GL_INVALID_OPERATION);
 }
 
 // Test enabling the GL_OES_element_index_uint extension
 TEST_P(WebGLCompatibilityTest, EnableExtensionUintIndices)
 {
     if (getClientMajorVersion() != 2)
     {
@@ -97,18 +97,19 @@ TEST_P(WebGLCompatibilityTest, EnableExt
 
     ANGLE_GL_PROGRAM(program, "void main() { gl_Position = vec4(0, 0, 0, 1); }",
                      "void main() { gl_FragColor = vec4(0, 1, 0, 1); }")
     glUseProgram(program.get());
 
     glDrawElements(GL_TRIANGLES, 2, GL_UNSIGNED_INT, nullptr);
     EXPECT_GL_ERROR(GL_INVALID_ENUM);
 
-    if (glEnableExtensionANGLE("GL_OES_element_index_uint"))
+    if (extensionRequestable("GL_OES_element_index_uint"))
     {
+        glRequestExtensionANGLE("GL_OES_element_index_uint");
         EXPECT_GL_NO_ERROR();
         EXPECT_TRUE(extensionEnabled("GL_OES_element_index_uint"));
 
         glDrawElements(GL_TRIANGLES, 2, GL_UNSIGNED_INT, nullptr);
         EXPECT_GL_NO_ERROR();
     }
 }
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/perf_tests/DynamicPromotionPerfTest.cpp
+++ b/gfx/angle/src/tests/perf_tests/DynamicPromotionPerfTest.cpp
@@ -5,19 +5,19 @@
 //
 // DynamicPromotionPerfTest:
 //   Tests that ANGLE will promote buffer specfied with DYNAMIC usage to static after a number of
 //   iterations without changing the data. It specifically affects the D3D back-end, which treats
 //   dynamic and static buffers quite differently.
 //
 
 #include "ANGLEPerfTest.h"
+#include "common/vector_utils.h"
 #include "random_utils.h"
 #include "shader_utils.h"
-#include "Vector.h"
 
 using namespace angle;
 
 namespace
 {
 
 struct DynamicPromotionParams final : public RenderTestParams
 {
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/perf_tests/InstancingPerf.cpp
+++ b/gfx/angle/src/tests/perf_tests/InstancingPerf.cpp
@@ -9,17 +9,16 @@
 
 #include <cmath>
 #include <sstream>
 
 #include "ANGLEPerfTest.h"
 #include "Matrix.h"
 #include "random_utils.h"
 #include "shader_utils.h"
-#include "Vector.h"
 
 using namespace angle;
 using namespace egl_platform;
 
 namespace
 {
 
 float AnimationSignal(float t)
@@ -285,27 +284,26 @@ void InstancingPerfBenchmark::drawBenchm
         ASSERT(params.instancingEnabled);
 
         float time = static_cast<float>(mTimer->getElapsedTime());
 
         for (size_t pointIndex = 0; pointIndex < mTranslateData.size(); ++pointIndex)
         {
             const Vector3 &translate = mTranslateData[pointIndex];
 
-            float tx = translate.x + time;
-            float ty = translate.y + time;
-            float tz = translate.z + time;
+            float tx = translate.x() + time;
+            float ty = translate.y() + time;
+            float tz = translate.z() + time;
 
             float scale           = AnimationSignal(tx) * 0.01f + 0.01f;
             mSizeData[pointIndex] = scale;
 
-            Vector3 color;
-            color.x = AnimationSignal(tx) * 0.5f + 0.5f;
-            color.y = AnimationSignal(ty) * 0.5f + 0.5f;
-            color.z = AnimationSignal(tz) * 0.5f + 0.5f;
+            Vector3 color =
+                Vector3(AnimationSignal(tx), AnimationSignal(ty), AnimationSignal(tz)) * 0.5f +
+                Vector3(0.5f);
 
             mColorData[pointIndex] = color;
         }
     }
 
     // Update scales and colors.
     glBindBuffer(GL_ARRAY_BUFFER, mBuffers[3]);
     glBufferSubData(GL_ARRAY_BUFFER, 0, VectorSizeBytes(mSizeData), &mSizeData[0]);
old mode 100755
new mode 100644
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/tests/perf_tests/LinkProgramPerfTest.cpp
@@ -0,0 +1,148 @@
+//
+// Copyright (c) 2016 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.
+//
+// LinkProgramPerfTest:
+//   Performance tests compiling a lot of shaders.
+//
+
+#include "ANGLEPerfTest.h"
+
+#include <array>
+
+#include "common/vector_utils.h"
+#include "shader_utils.h"
+
+using namespace angle;
+
+namespace
+{
+
+struct LinkProgramParams final : public RenderTestParams
+{
+    LinkProgramParams()
+    {
+        majorVersion = 2;
+        minorVersion = 0;
+        windowWidth  = 256;
+        windowHeight = 256;
+    }
+
+    std::string suffix() const override
+    {
+        std::stringstream strstr;
+        strstr << RenderTestParams::suffix();
+
+        if (eglParameters.deviceType == EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE)
+        {
+            strstr << "_null";
+        }
+
+        return strstr.str();
+    }
+};
+
+std::ostream &operator<<(std::ostream &os, const LinkProgramParams &params)
+{
+    os << params.suffix().substr(1);
+    return os;
+}
+
+class LinkProgramBenchmark : public ANGLERenderTest,
+                             public ::testing::WithParamInterface<LinkProgramParams>
+{
+  public:
+    LinkProgramBenchmark();
+
+    void initializeBenchmark() override;
+    void destroyBenchmark() override;
+    void drawBenchmark() override;
+
+  protected:
+    GLuint mVertexBuffer = 0;
+};
+
+LinkProgramBenchmark::LinkProgramBenchmark() : ANGLERenderTest("LinkProgram", GetParam())
+{
+}
+
+void LinkProgramBenchmark::initializeBenchmark()
+{
+    std::array<Vector3, 6> vertices = {{Vector3(-1.0f, 1.0f, 0.5f), Vector3(-1.0f, -1.0f, 0.5f),
+                                        Vector3(1.0f, -1.0f, 0.5f), Vector3(-1.0f, 1.0f, 0.5f),
+                                        Vector3(1.0f, -1.0f, 0.5f), Vector3(1.0f, 1.0f, 0.5f)}};
+
+    glGenBuffers(1, &mVertexBuffer);
+    glBindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
+    glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vector3), vertices.data(),
+                 GL_STATIC_DRAW);
+};
+
+void LinkProgramBenchmark::destroyBenchmark()
+{
+    glDeleteBuffers(1, &mVertexBuffer);
+}
+
+void LinkProgramBenchmark::drawBenchmark()
+{
+    static const char *vertexShader =
+        "attribute vec2 position;\n"
+        "void main() {\n"
+        "    gl_Position = vec4(position, 0, 1);\n"
+        "}";
+    static const char *fragmentShader =
+        "precision mediump float;\n"
+        "void main() {\n"
+        "    gl_FragColor = vec4(1, 0, 0, 1);\n"
+        "}";
+
+    GLuint program = CompileProgram(vertexShader, fragmentShader);
+    ASSERT_NE(0u, program);
+
+    glUseProgram(program);
+
+    GLint positionLoc = glGetAttribLocation(program, "position");
+    glVertexAttribPointer(positionLoc, 2, GL_FLOAT, GL_FALSE, 8, nullptr);
+    glEnableVertexAttribArray(positionLoc);
+
+    // Draw with the program to ensure the shader gets compiled and used.
+    glDrawArrays(GL_TRIANGLES, 0, 6);
+
+    glDeleteProgram(program);
+}
+
+using namespace egl_platform;
+
+LinkProgramParams LinkProgramD3D11Params()
+{
+    LinkProgramParams params;
+    params.eglParameters = D3D11();
+    return params;
+}
+
+LinkProgramParams LinkProgramD3D9Params()
+{
+    LinkProgramParams params;
+    params.eglParameters = D3D9();
+    return params;
+}
+
+LinkProgramParams LinkProgramOpenGLParams()
+{
+    LinkProgramParams params;
+    params.eglParameters = OPENGL();
+    return params;
+}
+
+TEST_P(LinkProgramBenchmark, Run)
+{
+    run();
+}
+
+ANGLE_INSTANTIATE_TEST(LinkProgramBenchmark,
+                       LinkProgramD3D11Params(),
+                       LinkProgramD3D9Params(),
+                       LinkProgramOpenGLParams());
+
+}  // anonymous namespace
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/PreprocessorTest.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/PreprocessorTest.cpp
@@ -2,28 +2,66 @@
 // 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 "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
-void PreprocessorTest::preprocess(const char* input, const char* expected)
+void SimplePreprocessorTest::preprocess(const char *input,
+                                        std::stringstream *output,
+                                        pp::Preprocessor *preprocessor)
 {
-    ASSERT_TRUE(mPreprocessor.init(1, &input, NULL));
+    ASSERT_TRUE(preprocessor->init(1, &input, NULL));
 
     int line = 1;
     pp::Token token;
-    std::stringstream stream;
     do
     {
-        mPreprocessor.lex(&token);
-        for (; line < token.location.line; ++line)
+        preprocessor->lex(&token);
+        if (output)
         {
-            stream << "\n";
+            for (; line < token.location.line; ++line)
+            {
+                *output << "\n";
+            }
+            *output << token;
         }
-        stream << token;
     } while (token.type != pp::Token::LAST);
+}
 
-    std::string actual = stream.str();
+void SimplePreprocessorTest::preprocess(const char *input, const pp::PreprocessorSettings &settings)
+{
+    pp::Preprocessor preprocessor(&mDiagnostics, &mDirectiveHandler, settings);
+    preprocess(input, nullptr, &preprocessor);
+}
+
+void SimplePreprocessorTest::preprocess(const char *input)
+{
+    preprocess(input, pp::PreprocessorSettings());
+}
+
+void SimplePreprocessorTest::preprocess(const char *input, const char *expected)
+{
+    pp::Preprocessor preprocessor(&mDiagnostics, &mDirectiveHandler, pp::PreprocessorSettings());
+    std::stringstream output;
+    preprocess(input, &output, &preprocessor);
+
+    std::string actual = output.str();
     EXPECT_STREQ(expected, actual.c_str());
 }
+
+void SimplePreprocessorTest::lexSingleToken(const char *input, pp::Token *token)
+{
+    pp::Preprocessor preprocessor(&mDiagnostics, &mDirectiveHandler, pp::PreprocessorSettings());
+    ASSERT_TRUE(preprocessor.init(1, &input, nullptr));
+    preprocessor.lex(token);
+}
+
+void SimplePreprocessorTest::lexSingleToken(size_t count,
+                                            const char *const input[],
+                                            pp::Token *token)
+{
+    pp::Preprocessor preprocessor(&mDiagnostics, &mDirectiveHandler, pp::PreprocessorSettings());
+    ASSERT_TRUE(preprocessor.init(count, input, nullptr));
+    preprocessor.lex(token);
+}
\ No newline at end of file
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/PreprocessorTest.h
+++ b/gfx/angle/src/tests/preprocessor_tests/PreprocessorTest.h
@@ -11,20 +11,40 @@
 #include "compiler/preprocessor/Preprocessor.h"
 
 #ifndef PREPROCESSOR_TESTS_PREPROCESSOR_TEST_H_
 #define PREPROCESSOR_TESTS_PREPROCESSOR_TEST_H_
 
 class PreprocessorTest : public testing::Test
 {
   protected:
-    PreprocessorTest() : mPreprocessor(&mDiagnostics, &mDirectiveHandler) { }
-
-    // Preprocesses the input string and verifies that it matches
-    // expected output.
-    void preprocess(const char* input, const char* expected);
+    PreprocessorTest()
+        : mPreprocessor(&mDiagnostics, &mDirectiveHandler, pp::PreprocessorSettings())
+    {
+    }
 
     MockDiagnostics mDiagnostics;
     MockDirectiveHandler mDirectiveHandler;
     pp::Preprocessor mPreprocessor;
 };
 
+class SimplePreprocessorTest : public testing::Test
+{
+  protected:
+    // Preprocesses the input string.
+    void preprocess(const char *input);
+    void preprocess(const char *input, const pp::PreprocessorSettings &settings);
+
+    // Preprocesses the input string and verifies that it matches expected output.
+    void preprocess(const char *input, const char *expected);
+
+    // Lexes a single token from input and writes it to token.
+    void lexSingleToken(const char *input, pp::Token *token);
+    void lexSingleToken(size_t count, const char *const input[], pp::Token *token);
+
+    MockDiagnostics mDiagnostics;
+    MockDirectiveHandler mDirectiveHandler;
+
+  private:
+    void preprocess(const char *input, std::stringstream *output, pp::Preprocessor *preprocessor);
+};
+
 #endif  // PREPROCESSOR_TESTS_PREPROCESSOR_TEST_H_
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/comment_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/comment_test.cpp
@@ -2,29 +2,26 @@
 // 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 "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
-class CommentTest : public PreprocessorTest,
-                    public testing::WithParamInterface<const char*>
+class CommentTest : public SimplePreprocessorTest, public testing::WithParamInterface<const char *>
 {
 };
 
 TEST_P(CommentTest, CommentIgnored)
 {
     const char* str = GetParam();
 
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
-
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(str, &token);
     EXPECT_EQ(pp::Token::LAST, token.type);
 }
 
 INSTANTIATE_TEST_CASE_P(LineComment, CommentTest,
                         testing::Values("//foo\n", // With newline.
                                         "//foo",   // Without newline.
                                         "//**/",   // Nested block comment.
                                         "////",    // Nested line comment.
@@ -33,37 +30,32 @@ INSTANTIATE_TEST_CASE_P(LineComment, Com
 INSTANTIATE_TEST_CASE_P(BlockComment, CommentTest,
                         testing::Values("/*foo*/",
                                         "/*foo\n*/", // With newline.
                                         "/*//*/",    // Nested line comment.
                                         "/*/**/",    // Nested block comment.
                                         "/***/",     // With lone '*'.
                                         "/*\"*/"));  // Invalid character.
 
-class BlockCommentTest : public PreprocessorTest
+class BlockCommentTest : public SimplePreprocessorTest
 {
 };
 
 TEST_F(BlockCommentTest, CommentReplacedWithSpace)
 {
     const char* str = "/*foo*/bar";
 
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
-
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(str, &token);
     EXPECT_EQ(pp::Token::IDENTIFIER, token.type);
     EXPECT_EQ("bar", token.text);
     EXPECT_TRUE(token.hasLeadingSpace());
 }
 
 TEST_F(BlockCommentTest, UnterminatedComment)
 {
     const char* str = "/*foo";
 
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
-
     using testing::_;
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_EOF_IN_COMMENT, _, _));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/define_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/define_test.cpp
@@ -1,20 +1,22 @@
 //
 // 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 <sstream>
+
 #include "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
 using testing::_;
 
-class DefineTest : public PreprocessorTest
+class DefineTest : public SimplePreprocessorTest
 {
 };
 
 TEST_F(DefineTest, NonIdentifier)
 {
     const char* input = "#define 2 foo\n"
                         "2\n";
     const char* expected = "\n"
@@ -844,54 +846,50 @@ TEST_F(DefineTest, Predefined_VERSION)
     const char* expected = "100\n";
 
     preprocess(input, expected);
 }
 
 TEST_F(DefineTest, Predefined_LINE1)
 {
     const char* str = "\n\n__LINE__";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, NULL));
 
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(str, &token);
     EXPECT_EQ(pp::Token::CONST_INT, token.type);
     EXPECT_EQ("3", token.text);
 }
 
 TEST_F(DefineTest, Predefined_LINE2)
 {
     const char* str = "#line 10\n"
                       "__LINE__\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, NULL));
 
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(str, &token);
     EXPECT_EQ(pp::Token::CONST_INT, token.type);
     EXPECT_EQ("10", token.text);
 }
 
 TEST_F(DefineTest, Predefined_FILE1)
 {
     const char* const str[] = {"", "", "__FILE__"};
-    ASSERT_TRUE(mPreprocessor.init(3, str, NULL));
 
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(3, str, &token);
     EXPECT_EQ(pp::Token::CONST_INT, token.type);
     EXPECT_EQ("2", token.text);
 }
 
 TEST_F(DefineTest, Predefined_FILE2)
 {
     const char* const str[] = {"#line 10 20\n", "__FILE__"};
-    ASSERT_TRUE(mPreprocessor.init(2, str, NULL));
 
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(2, str, &token);
     EXPECT_EQ(pp::Token::CONST_INT, token.type);
     EXPECT_EQ("21", token.text);
 }
 
 // Defined operator produced by macro expansion should be parsed inside #if directives
 TEST_F(DefineTest, ExpandedDefinedParsedInsideIf)
 {
     const char *input =
@@ -981,8 +979,32 @@ TEST_F(DefineTest, RecursiveMacroNameIns
         "#define a m((a)\n"
         "a)\n";
     const char *expected =
         "\n"
         "\n"
         "\n";
     preprocess(input, expected);
 }
+
+// The macro invocations form a long chain. The macro expander should protect against stack overflow
+// and generate an error in this case.
+TEST_F(DefineTest, LongMacroInvocationChain)
+{
+    std::stringstream inputStream;
+    std::stringstream expectedStream;
+
+    inputStream << "#define b(x) x\n";
+    inputStream << "#define a0(x) foo x\n";
+    for (int i = 1; i < 20; ++i)
+    {
+        inputStream << "#define a" << i << "(x) b(a" << (i - 1) << "(x))\n";
+    }
+    inputStream << "a19(y)\n";
+
+    EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_MACRO_INVOCATION_CHAIN_TOO_DEEP,
+                                    pp::SourceLocation(0, 22), _));
+
+    pp::PreprocessorSettings settings;
+    settings.maxMacroExpansionDepth = 19;
+
+    preprocess(inputStream.str().c_str(), settings);
+}
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/error_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/error_test.cpp
@@ -2,17 +2,17 @@
 // 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 "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
-class ErrorTest : public PreprocessorTest
+class ErrorTest : public SimplePreprocessorTest
 {
 };
 
 TEST_F(ErrorTest, Empty)
 {
     const char* str = "#error\n";
     const char* expected = "\n";
 
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/extension_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/extension_test.cpp
@@ -2,17 +2,17 @@
 // 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 "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
-class ExtensionTest : public PreprocessorTest
+class ExtensionTest : public SimplePreprocessorTest
 {
 };
 
 TEST_F(ExtensionTest, Valid)
 {
     const char* str = "#extension foo : bar\n";
     const char* expected = "\n";
 
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/identifier_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/identifier_test.cpp
@@ -4,26 +4,25 @@
 // found in the LICENSE file.
 //
 
 #include "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
 #define CLOSED_RANGE(x, y) testing::Range(x, static_cast<char>((y) + 1))
 
-class IdentifierTest : public PreprocessorTest
+class IdentifierTest : public SimplePreprocessorTest
 {
 protected:
     void expectIdentifier(const std::string& str)
     {
         const char* cstr = str.c_str();
-        ASSERT_TRUE(mPreprocessor.init(1, &cstr, 0));
 
         pp::Token token;
-        mPreprocessor.lex(&token);
+        lexSingleToken(cstr, &token);
         EXPECT_EQ(pp::Token::IDENTIFIER, token.type);
         EXPECT_EQ(str, token.text);
     }
 };
 
 class SingleLetterIdentifierTest : public IdentifierTest,
                                    public testing::WithParamInterface<char>
 {
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/if_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/if_test.cpp
@@ -2,17 +2,17 @@
 // 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 "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
-class IfTest : public PreprocessorTest
+class IfTest : public SimplePreprocessorTest
 {
 };
 
 TEST_F(IfTest, If_0)
 {
     const char* str = "pass_1\n"
                       "#if 0\n"
                       "fail\n"
@@ -604,110 +604,96 @@ TEST_F(IfTest, Ifndef)
 
     preprocess(str, expected);
 }
 
 TEST_F(IfTest, MissingExpression)
 {
     const char* str = "#if\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_INVALID_EXPRESSION,
                       pp::SourceLocation(0, 1),
                       "syntax error"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, DivisionByZero)
 {
     const char* str = "#if 1 / (3 - (1 + 2))\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_DIVISION_BY_ZERO,
                       pp::SourceLocation(0, 1), "1 / 0"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, ModuloByZero)
 {
     const char* str = "#if 1 % (3 - (1 + 2))\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_DIVISION_BY_ZERO,
                       pp::SourceLocation(0, 1), "1 % 0"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, DecIntegerOverflow)
 {
     const char* str = "#if 4294967296\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_INTEGER_OVERFLOW,
                       pp::SourceLocation(0, 1), "4294967296"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, OctIntegerOverflow)
 {
     const char* str = "#if 077777777777\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_INTEGER_OVERFLOW,
                       pp::SourceLocation(0, 1), "077777777777"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, HexIntegerOverflow)
 {
     const char* str = "#if 0xfffffffff\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_INTEGER_OVERFLOW,
                       pp::SourceLocation(0, 1), "0xfffffffff"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, UndefinedMacro)
 {
     const char* str = "#if UNDEFINED\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                       pp::SourceLocation(0, 1),
                       "UNDEFINED"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, InvalidExpressionIgnoredForExcludedElif)
 {
     const char* str = "#if 1\n"
                       "pass\n"
                       "#elif UNDEFINED\n"
                       "fail\n"
@@ -723,148 +709,130 @@ TEST_F(IfTest, InvalidExpressionIgnoredF
     EXPECT_CALL(mDiagnostics, print(_, _, _)).Times(0);
 
     preprocess(str, expected);
 }
 
 TEST_F(IfTest, ElseWithoutIf)
 {
     const char* str = "#else\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_ELSE_WITHOUT_IF,
                       pp::SourceLocation(0, 1),
                       "else"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, ElifWithoutIf)
 {
     const char* str = "#elif 1\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_ELIF_WITHOUT_IF,
                       pp::SourceLocation(0, 1),
                       "elif"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, EndifWithoutIf)
 {
     const char* str = "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_ENDIF_WITHOUT_IF,
                       pp::SourceLocation(0, 1),
                       "endif"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, ElseAfterElse)
 {
     const char* str = "#if 1\n"
                       "#else\n"
                       "#else\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_ELSE_AFTER_ELSE,
                       pp::SourceLocation(0, 3),
                       "else"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, ElifAfterElse)
 {
     const char* str = "#if 1\n"
                       "#else\n"
                       "#elif 0\n"
                       "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_ELIF_AFTER_ELSE,
                       pp::SourceLocation(0, 3),
                       "elif"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, UnterminatedIf)
 {
     const char* str = "#if 1\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_UNTERMINATED,
                       pp::SourceLocation(0, 1),
                       "if"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 TEST_F(IfTest, UnterminatedIfdef)
 {
     const char* str = "#ifdef foo\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_CONDITIONAL_UNTERMINATED,
                       pp::SourceLocation(0, 1),
                       "ifdef"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // The preprocessor only allows one expression to follow an #if directive.
 // Supplying two integer expressions should be an error.
 TEST_F(IfTest, ExtraIntExpression)
 {
     const char *str =
         "#if 1 1\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 1), "1"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // The preprocessor only allows one expression to follow an #if directive.
 // Supplying two expressions where one uses a preprocessor define should be an error.
 TEST_F(IfTest, ExtraIdentifierExpression)
 {
     const char *str =
         "#define one 1\n"
         "#if 1 one\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 2), "1"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Divide by zero that's not evaluated because of short-circuiting should not cause an error.
 TEST_F(IfTest, ShortCircuitedDivideByZero)
 {
     const char *str =
         "#if 1 || (2 / 0)\n"
         "pass\n"
@@ -897,97 +865,87 @@ TEST_F(IfTest, ShortCircuitedUndefined)
 // needed for passing dEQP tests, which enforce stricter compatibility between implementations.
 TEST_F(IfTest, DefinedOperatorValidAfterMacroExpansion)
 {
     const char *str =
         "#define foo defined\n"
         "#if !foo bar\n"
         "pass\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 2), "defined"));
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 2), "bar"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Defined operator produced by macro expansion has undefined behavior according to C++ spec,
 // which the GLSL spec references (see C++14 draft spec section 16.1.4), but this behavior is
 // needed for passing dEQP tests, which enforce stricter compatibility between implementations.
 TEST_F(IfTest, UnterminatedDefinedInMacro)
 {
     const char *str =
         "#define foo defined(\n"
         "#if foo\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 2), "defined"));
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 2), "("));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Defined operator produced by macro expansion has undefined behavior according to C++ spec,
 // which the GLSL spec references (see C++14 draft spec section 16.1.4), but this behavior is
 // needed for passing dEQP tests, which enforce stricter compatibility between implementations.
 TEST_F(IfTest, UnterminatedDefinedInMacro2)
 {
     const char *str =
         "#define foo defined(bar\n"
         "#if foo\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 2), "defined"));
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_CONDITIONAL_UNEXPECTED_TOKEN,
                                     pp::SourceLocation(0, 2), "("));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Undefined shift: negative shift offset.
 TEST_F(IfTest, BitShiftLeftOperatorNegativeOffset)
 {
     const char *str =
         "#if 2 << -1 == 1\n"
         "foo\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_UNDEFINED_SHIFT, pp::SourceLocation(0, 1), "2 << -1"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Undefined shift: shift offset is out of range.
 TEST_F(IfTest, BitShiftLeftOperatorOffset32)
 {
     const char *str =
         "#if 2 << 32 == 1\n"
         "foo\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_UNDEFINED_SHIFT, pp::SourceLocation(0, 1), "2 << 32"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Left hand side of shift is negative.
 TEST_F(IfTest, BitShiftLeftOperatorNegativeLHS)
 {
     const char *str =
         "#if (-2) << 1 == -4\n"
         "pass\n"
@@ -1002,39 +960,35 @@ TEST_F(IfTest, BitShiftLeftOperatorNegat
 
 // Undefined shift: shift offset is out of range.
 TEST_F(IfTest, BitShiftRightOperatorNegativeOffset)
 {
     const char *str =
         "#if 2 >> -1 == 4\n"
         "foo\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_UNDEFINED_SHIFT, pp::SourceLocation(0, 1), "2 >> -1"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Undefined shift: shift offset is out of range.
 TEST_F(IfTest, BitShiftRightOperatorOffset32)
 {
     const char *str =
         "#if 2 >> 32 == 0\n"
         "foo\n"
         "#endif\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_UNDEFINED_SHIFT, pp::SourceLocation(0, 1), "2 >> 32"));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 // Left hand side of shift is negative.
 TEST_F(IfTest, BitShiftRightOperatorNegativeLHS)
 {
     const char *str =
         "#if (-2) >> 1 == 0x7fffffff\n"
         "pass\n"
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/number_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/number_test.cpp
@@ -4,56 +4,51 @@
 // found in the LICENSE file.
 //
 
 #include "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
 #define CLOSED_RANGE(x, y) testing::Range(x, static_cast<char>((y) + 1))
 
-class InvalidNumberTest : public PreprocessorTest,
-                          public testing::WithParamInterface<const char*>
+class InvalidNumberTest : public SimplePreprocessorTest,
+                          public testing::WithParamInterface<const char *>
 {
 };
 
 TEST_P(InvalidNumberTest, InvalidNumberIdentified)
 {
     const char* str = GetParam();
-    ASSERT_TRUE(mPreprocessor.init(1, &str, 0));
 
     using testing::_;
     EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_INVALID_NUMBER, _, str));
 
-    pp::Token token;
-    mPreprocessor.lex(&token);
+    preprocess(str);
 }
 
 INSTANTIATE_TEST_CASE_P(InvalidIntegers, InvalidNumberTest,
                         testing::Values("1a", "08", "0xG"));
 
 
 INSTANTIATE_TEST_CASE_P(InvalidFloats, InvalidNumberTest,
                         testing::Values("1eg", "0.a", "0.1.2", ".0a", ".0.1"));
 
 typedef std::tr1::tuple<const char*, char> IntegerParams;
-class IntegerTest : public PreprocessorTest,
-                    public testing::WithParamInterface<IntegerParams>
+class IntegerTest : public SimplePreprocessorTest, public testing::WithParamInterface<IntegerParams>
 {
 };
 
 TEST_P(IntegerTest, Identified)
 {
     std::string str(std::tr1::get<0>(GetParam()));  // prefix.
     str.push_back(std::tr1::get<1>(GetParam()));  // digit.
     const char* cstr = str.c_str();
 
-    ASSERT_TRUE(mPreprocessor.init(1, &cstr, 0));
-
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(cstr, &token);
     EXPECT_EQ(pp::Token::CONST_INT, token.type);
     EXPECT_EQ(str, token.text);
 }
 
 INSTANTIATE_TEST_CASE_P(DecimalInteger,
                         IntegerTest,
                         testing::Combine(testing::Values(""),
                                          CLOSED_RANGE('0', '9')));
@@ -73,26 +68,25 @@ INSTANTIATE_TEST_CASE_P(HexadecimalInteg
                         testing::Combine(testing::Values("0x", "0X"),
                                          CLOSED_RANGE('a', 'f')));
 
 INSTANTIATE_TEST_CASE_P(HexadecimalInteger_A_F,
                         IntegerTest,
                         testing::Combine(testing::Values("0x", "0X"),
                                          CLOSED_RANGE('A', 'F')));
 
-class FloatTest : public PreprocessorTest
+class FloatTest : public SimplePreprocessorTest
 {
   protected:
     void expectFloat(const std::string& str)
     {
         const char* cstr = str.c_str();
-        ASSERT_TRUE(mPreprocessor.init(1, &cstr, 0));
 
         pp::Token token;
-        mPreprocessor.lex(&token);
+        lexSingleToken(cstr, &token);
         EXPECT_EQ(pp::Token::CONST_FLOAT, token.type);
         EXPECT_EQ(str, token.text);
     }
 };
 
 typedef std::tr1::tuple<char, char, const char*, char> FloatScientificParams;
 class FloatScientificTest :
     public FloatTest,
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/operator_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/operator_test.cpp
@@ -8,29 +8,27 @@
 #include "compiler/preprocessor/Token.h"
 
 struct OperatorTestParam
 {
     const char* str;
     int op;
 };
 
-class OperatorTest : public PreprocessorTest,
+class OperatorTest : public SimplePreprocessorTest,
                      public testing::WithParamInterface<OperatorTestParam>
 {
 };
 
 TEST_P(OperatorTest, Identified)
 {
     OperatorTestParam param = GetParam();
 
-    ASSERT_TRUE(mPreprocessor.init(1, &param.str, 0));
-
     pp::Token token;
-    mPreprocessor.lex(&token);
+    lexSingleToken(param.str, &token);
     EXPECT_EQ(param.op, token.type);
     EXPECT_EQ(param.str, token.text);
 }
 
 static const OperatorTestParam kOperators[] = {
     {"(", '('},
     {")", ')'},
     {"[", '['},
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/pragma_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/pragma_test.cpp
@@ -2,17 +2,17 @@
 // 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 "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
-class PragmaTest : public PreprocessorTest
+class PragmaTest : public SimplePreprocessorTest
 {
 };
 
 TEST_F(PragmaTest, EmptyName)
 {
     const char* str = "#pragma\n";
     const char* expected = "\n";
 
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/preprocessor_tests/version_test.cpp
+++ b/gfx/angle/src/tests/preprocessor_tests/version_test.cpp
@@ -2,17 +2,17 @@
 // 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 "PreprocessorTest.h"
 #include "compiler/preprocessor/Token.h"
 
-class VersionTest : public PreprocessorTest
+class VersionTest : public SimplePreprocessorTest
 {
 };
 
 TEST_F(VersionTest, Valid)
 {
     const char* str = "#version 200\n";
     const char* expected = "\n";
 
@@ -95,108 +95,83 @@ TEST_F(VersionTest, AfterWhitespace)
     
     preprocess(str, expected);
 }
 
 TEST_F(VersionTest, AfterValidToken)
 {
     const char* str = "foo\n"
                       "#version 200\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, NULL));
 
     using testing::_;
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_VERSION_NOT_FIRST_STATEMENT,
                       pp::SourceLocation(0, 2), _));
 
-    pp::Token token;
-    do
-    {
-        mPreprocessor.lex(&token);
-    } while (token.type != pp::Token::LAST);
+    preprocess(str);
 }
 
 TEST_F(VersionTest, AfterInvalidToken)
 {
     const char* str = "$\n"
                       "#version 200\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, NULL));
 
     using testing::_;
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_INVALID_CHARACTER,
                       pp::SourceLocation(0, 1), "$"));
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_VERSION_NOT_FIRST_STATEMENT,
                       pp::SourceLocation(0, 2), _));
 
-    pp::Token token;
-    do
-    {
-        mPreprocessor.lex(&token);
-    } while (token.type != pp::Token::LAST);
+    preprocess(str);
 }
 
 TEST_F(VersionTest, AfterValidDirective)
 {
     const char* str = "#\n"
                       "#version 200\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, NULL));
 
     using testing::_;
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_VERSION_NOT_FIRST_STATEMENT,
                       pp::SourceLocation(0, 2), _));
 
-    pp::Token token;
-    do
-    {
-        mPreprocessor.lex(&token);
-    } while (token.type != pp::Token::LAST);
+    preprocess(str);
 }
 
 TEST_F(VersionTest, AfterInvalidDirective)
 {
     const char* str = "#foo\n"
                       "#version 200\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, NULL));
 
     using testing::_;
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_DIRECTIVE_INVALID_NAME,
                       pp::SourceLocation(0, 1), "foo"));
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_VERSION_NOT_FIRST_STATEMENT,
                       pp::SourceLocation(0, 2), _));
 
-    pp::Token token;
-    do
-    {
-        mPreprocessor.lex(&token);
-    } while (token.type != pp::Token::LAST);
+    preprocess(str);
 }
 
 TEST_F(VersionTest, AfterExcludedBlock)
 {
     const char* str = "#if 0\n"
                       "foo\n"
                       "#endif\n"
                       "#version 200\n";
-    ASSERT_TRUE(mPreprocessor.init(1, &str, NULL));
 
     using testing::_;
     EXPECT_CALL(mDiagnostics,
                 print(pp::Diagnostics::PP_VERSION_NOT_FIRST_STATEMENT,
                       pp::SourceLocation(0, 4), _));
 
-    pp::Token token;
-    do
-    {
-        mPreprocessor.lex(&token);
-    } while (token.type != pp::Token::LAST);
+    preprocess(str);
 }
 
 struct VersionTestParam
 {
     const char* str;
     pp::Diagnostics::ID id;
 };
 
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/test_utils/ANGLETest.cpp
+++ b/gfx/angle/src/tests/test_utils/ANGLETest.cpp
@@ -90,65 +90,65 @@ void TestPlatform::ignoreMessages()
 
 void TestPlatform::enableMessages()
 {
     mIgnoreMessages = false;
 }
 
 TestPlatform g_testPlatformInstance;
 
-std::array<Vector3, 4> GetIndexedQuadVertices()
+std::array<angle::Vector3, 4> GetIndexedQuadVertices()
 {
-    std::array<Vector3, 4> vertices;
-    vertices[0] = Vector3(-1.0f, 1.0f, 0.5f);
-    vertices[1] = Vector3(-1.0f, -1.0f, 0.5f);
-    vertices[2] = Vector3(1.0f, -1.0f, 0.5f);
-    vertices[3] = Vector3(1.0f, 1.0f, 0.5f);
+    std::array<angle::Vector3, 4> vertices;
+    vertices[0] = angle::Vector3(-1.0f, 1.0f, 0.5f);
+    vertices[1] = angle::Vector3(-1.0f, -1.0f, 0.5f);
+    vertices[2] = angle::Vector3(1.0f, -1.0f, 0.5f);
+    vertices[3] = angle::Vector3(1.0f, 1.0f, 0.5f);
     return vertices;
 }
 
 }  // anonymous namespace
 
 GLColorRGB::GLColorRGB() : R(0), G(0), B(0)
 {
 }
 
 GLColorRGB::GLColorRGB(GLubyte r, GLubyte g, GLubyte b) : R(r), G(g), B(b)
 {
 }
 
-GLColorRGB::GLColorRGB(const Vector3 &floatColor)
-    : R(ColorDenorm(floatColor.x)), G(ColorDenorm(floatColor.y)), B(ColorDenorm(floatColor.z))
+GLColorRGB::GLColorRGB(const angle::Vector3 &floatColor)
+    : R(ColorDenorm(floatColor.x())), G(ColorDenorm(floatColor.y())), B(ColorDenorm(floatColor.z()))
 {
 }
 
 GLColor::GLColor() : R(0), G(0), B(0), A(0)
 {
 }
 
 GLColor::GLColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a) : R(r), G(g), B(b), A(a)
 {
 }
 
-GLColor::GLColor(const Vector4 &floatColor)
-    : R(ColorDenorm(floatColor.x)),
-      G(ColorDenorm(floatColor.y)),
-      B(ColorDenorm(floatColor.z)),
-      A(ColorDenorm(floatColor.w))
+GLColor::GLColor(const angle::Vector4 &floatColor)
+    : R(ColorDenorm(floatColor.x())),
+      G(ColorDenorm(floatColor.y())),
+      B(ColorDenorm(floatColor.z())),
+      A(ColorDenorm(floatColor.w()))
 {
 }
 
 GLColor::GLColor(GLuint colorValue) : R(0), G(0), B(0), A(0)
 {
     memcpy(&R, &colorValue, sizeof(GLuint));
 }
 
-Vector4 GLColor::toNormalizedVector() const
+angle::Vector4 GLColor::toNormalizedVector() const
 {
-    return Vector4(ColorNorm(R), ColorNorm(G), ColorNorm(B), ColorNorm(A));
+    return angle::Vector4(ColorNorm(R), ColorNorm(G), ColorNorm(B), ColorNorm(A));
 }
 
 GLColor ReadColor(GLint x, GLint y)
 {
     GLColor actual;
     glReadPixels((x), (y), 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &actual.R);
     EXPECT_GL_NO_ERROR();
     return actual;
@@ -165,25 +165,25 @@ std::ostream &operator<<(std::ostream &o
             << static_cast<unsigned int>(color.G) << ", " << static_cast<unsigned int>(color.B)
             << ", " << static_cast<unsigned int>(color.A) << ")";
     return ostream;
 }
 
 }  // namespace angle
 
 // static
-std::array<Vector3, 6> ANGLETest::GetQuadVertices()
+std::array<angle::Vector3, 6> ANGLETest::GetQuadVertices()
 {
-    std::array<Vector3, 6> vertices;
-    vertices[0] = Vector3(-1.0f, 1.0f, 0.5f);
-    vertices[1] = Vector3(-1.0f, -1.0f, 0.5f);
-    vertices[2] = Vector3(1.0f, -1.0f, 0.5f);
-    vertices[3] = Vector3(-1.0f, 1.0f, 0.5f);
-    vertices[4] = Vector3(1.0f, -1.0f, 0.5f);
-    vertices[5] = Vector3(1.0f, 1.0f, 0.5f);
+    std::array<angle::Vector3, 6> vertices;
+    vertices[0] = angle::Vector3(-1.0f, 1.0f, 0.5f);
+    vertices[1] = angle::Vector3(-1.0f, -1.0f, 0.5f);
+    vertices[2] = angle::Vector3(1.0f, -1.0f, 0.5f);
+    vertices[3] = angle::Vector3(-1.0f, 1.0f, 0.5f);
+    vertices[4] = angle::Vector3(1.0f, -1.0f, 0.5f);
+    vertices[5] = angle::Vector3(1.0f, 1.0f, 0.5f);
     return vertices;
 }
 
 ANGLETest::ANGLETest()
     : mEGLWindow(nullptr),
       mWidth(16),
       mHeight(16),
       mIgnoreD3D11SDKLayersWarnings(false),
@@ -277,40 +277,40 @@ void ANGLETest::swapBuffers()
 void ANGLETest::setupQuadVertexBuffer(GLfloat positionAttribZ, GLfloat positionAttribXYScale)
 {
     if (mQuadVertexBuffer == 0)
     {
         glGenBuffers(1, &mQuadVertexBuffer);
     }
 
     auto quadVertices = GetQuadVertices();
-    for (Vector3 &vertex : quadVertices)
+    for (angle::Vector3 &vertex : quadVertices)
     {
-        vertex.x *= positionAttribXYScale;
-        vertex.y *= positionAttribXYScale;
-        vertex.z = positionAttribZ;
+        vertex.x() *= positionAttribXYScale;
+        vertex.y() *= positionAttribXYScale;
+        vertex.z() = positionAttribZ;
     }
 
     glBindBuffer(GL_ARRAY_BUFFER, mQuadVertexBuffer);
     glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 3 * 6, quadVertices.data(), GL_STATIC_DRAW);
 }
 
 void ANGLETest::setupIndexedQuadVertexBuffer(GLfloat positionAttribZ, GLfloat positionAttribXYScale)
 {
     if (mQuadVertexBuffer == 0)
     {
         glGenBuffers(1, &mQuadVertexBuffer);
     }
 
     auto quadVertices = angle::GetIndexedQuadVertices();
-    for (Vector3 &vertex : quadVertices)
+    for (angle::Vector3 &vertex : quadVertices)
     {
-        vertex.x *= positionAttribXYScale;
-        vertex.y *= positionAttribXYScale;
-        vertex.z = positionAttribZ;
+        vertex.x() *= positionAttribXYScale;
+        vertex.y() *= positionAttribXYScale;
+        vertex.z() = positionAttribZ;
     }
 
     glBindBuffer(GL_ARRAY_BUFFER, mQuadVertexBuffer);
     glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 3 * 4, quadVertices.data(), GL_STATIC_DRAW);
 }
 
 // static
 void ANGLETest::drawQuad(GLuint program,
@@ -348,21 +348,21 @@ void ANGLETest::drawQuad(GLuint program,
     {
         setupQuadVertexBuffer(positionAttribZ, positionAttribXYScale);
         glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
         glBindBuffer(GL_ARRAY_BUFFER, 0);
     }
     else
     {
         auto quadVertices = GetQuadVertices();
-        for (Vector3 &vertex : quadVertices)
+        for (angle::Vector3 &vertex : quadVertices)
         {
-            vertex.x *= positionAttribXYScale;
-            vertex.y *= positionAttribXYScale;
-            vertex.z = positionAttribZ;
+            vertex.x() *= positionAttribXYScale;
+            vertex.y() *= positionAttribXYScale;
+            vertex.z() = positionAttribZ;
         }
 
         glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, quadVertices.data());
     }
     glEnableVertexAttribArray(positionLocation);
 
     glDrawArrays(GL_TRIANGLES, 0, 6);
 
@@ -534,16 +534,22 @@ static bool checkExtensionExists(const c
 }
 
 bool ANGLETest::extensionEnabled(const std::string &extName)
 {
     return checkExtensionExists(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)),
                                 extName);
 }
 
+bool ANGLETest::extensionRequestable(const std::string &extName)
+{
+    return checkExtensionExists(
+        reinterpret_cast<const char *>(glGetString(GL_REQUESTABLE_EXTENSIONS_ANGLE)), extName);
+}
+
 bool ANGLETest::eglDisplayExtensionEnabled(EGLDisplay display, const std::string &extName)
 {
     return checkExtensionExists(eglQueryString(display, EGL_EXTENSIONS), extName);
 }
 
 bool ANGLETest::eglClientExtensionEnabled(const std::string &extName)
 {
     return checkExtensionExists(eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS), extName);
@@ -753,16 +759,22 @@ bool IsOpenGLES()
 }
 
 bool IsOpenGL()
 {
     std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
     return (rendererString.find("OpenGL") != std::string::npos);
 }
 
+bool IsNULL()
+{
+    std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
+    return (rendererString.find("NULL") != std::string::npos);
+}
+
 bool IsAndroid()
 {
 #if defined(ANGLE_PLATFORM_ANDROID)
     return true;
 #else
     return false;
 #endif
 }
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/test_utils/ANGLETest.h
+++ b/gfx/angle/src/tests/test_utils/ANGLETest.h
@@ -12,19 +12,19 @@
 
 #include <gtest/gtest.h>
 #include <algorithm>
 #include <array>
 
 #include "angle_gl.h"
 #include "angle_test_configs.h"
 #include "common/angleutils.h"
+#include "common/vector_utils.h"
 #include "shader_utils.h"
 #include "system_utils.h"
-#include "Vector.h"
 
 #define EXPECT_GL_ERROR(err) EXPECT_EQ(static_cast<GLenum>(err), glGetError())
 #define EXPECT_GL_NO_ERROR() EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError())
 
 #define ASSERT_GL_ERROR(err) ASSERT_EQ(static_cast<GLenum>(err), glGetError())
 #define ASSERT_GL_NO_ERROR() ASSERT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError())
 
 #define EXPECT_EGL_ERROR(err) EXPECT_EQ((err), eglGetError())
@@ -43,35 +43,35 @@
 #define EXPECT_GLENUM_EQ(expected, actual) EXPECT_EQ(static_cast<GLenum>(expected), static_cast<GLenum>(actual))
 
 namespace angle
 {
 struct GLColorRGB
 {
     GLColorRGB();
     GLColorRGB(GLubyte r, GLubyte g, GLubyte b);
-    GLColorRGB(const Vector3 &floatColor);
+    GLColorRGB(const angle::Vector3 &floatColor);
 
     GLubyte R, G, B;
 
     static const GLColorRGB black;
     static const GLColorRGB blue;
     static const GLColorRGB green;
     static const GLColorRGB red;
     static const GLColorRGB yellow;
 };
 
 struct GLColor
 {
     GLColor();
     GLColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a);
-    GLColor(const Vector4 &floatColor);
+    GLColor(const angle::Vector4 &floatColor);
     GLColor(GLuint colorValue);
 
-    Vector4 toNormalizedVector() const;
+    angle::Vector4 toNormalizedVector() const;
 
     GLubyte R, G, B, A;
 
     static const GLColor black;
     static const GLColor blue;
     static const GLColor cyan;
     static const GLColor green;
     static const GLColor red;
@@ -155,27 +155,28 @@ class ANGLETest : public ::testing::Test
                   const std::string &positionAttribName,
                   GLfloat positionAttribZ,
                   GLfloat positionAttribXYScale);
     void drawQuad(GLuint program,
                   const std::string &positionAttribName,
                   GLfloat positionAttribZ,
                   GLfloat positionAttribXYScale,
                   bool useVertexBuffer);
-    static std::array<Vector3, 6> GetQuadVertices();
+    static std::array<angle::Vector3, 6> GetQuadVertices();
     void drawIndexedQuad(GLuint program,
                          const std::string &positionAttribName,
                          GLfloat positionAttribZ);
     void drawIndexedQuad(GLuint program,
                          const std::string &positionAttribName,
                          GLfloat positionAttribZ,
                          GLfloat positionAttribXYScale);
 
     static GLuint compileShader(GLenum type, const std::string &source);
     static bool extensionEnabled(const std::string &extName);
+    static bool extensionRequestable(const std::string &extName);
     static bool eglClientExtensionEnabled(const std::string &extName);
     static bool eglDeviceExtensionEnabled(EGLDeviceEXT device, const std::string &extName);
 
     void setWindowWidth(int width);
     void setWindowHeight(int height);
     void setConfigRedBits(int bits);
     void setConfigGreenBits(int bits);
     void setConfigBlueBits(int bits);
@@ -241,16 +242,17 @@ bool IsD3D11();
 bool IsD3D11_FL93();
 // Is a D3D9-class renderer.
 bool IsD3D9();
 // Is D3D9 or SM9_3 renderer.
 bool IsD3DSM3();
 bool IsDesktopOpenGL();
 bool IsOpenGLES();
 bool IsOpenGL();
+bool IsNULL();
 
 // Operating systems
 bool IsAndroid();
 bool IsLinux();
 bool IsOSX();
 bool IsWindows();
 
 // Debug/Release
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/tests/test_utils/ConstantFoldingTest.cpp
@@ -0,0 +1,65 @@
+//
+// Copyright (c) 2016 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.
+//
+// ConstantFoldingTest.cpp:
+//   Utilities for constant folding tests.
+//
+
+#include "tests/test_utils/ConstantFoldingTest.h"
+
+#include "angle_gl.h"
+#include "compiler/translator/TranslatorESSL.h"
+#include "GLSLANG/ShaderLang.h"
+
+using namespace sh;
+
+void ConstantFoldingTest::SetUp()
+{
+    allocator.push();
+    SetGlobalPoolAllocator(&allocator);
+    ShBuiltInResources resources;
+    InitBuiltInResources(&resources);
+
+    mTranslatorESSL = new TranslatorESSL(GL_FRAGMENT_SHADER, SH_GLES3_SPEC);
+    ASSERT_TRUE(mTranslatorESSL->Init(resources));
+}
+
+void ConstantFoldingTest::TearDown()
+{
+    delete mTranslatorESSL;
+    SetGlobalPoolAllocator(NULL);
+    allocator.pop();
+}
+
+void ConstantFoldingTest::compile(const std::string &shaderString)
+{
+    const char *shaderStrings[] = {shaderString.c_str()};
+
+    mASTRoot = mTranslatorESSL->compileTreeForTesting(shaderStrings, 1, SH_OBJECT_CODE);
+    if (!mASTRoot)
+    {
+        TInfoSink &infoSink = mTranslatorESSL->getInfoSink();
+        FAIL() << "Shader compilation into ESSL failed " << infoSink.info.c_str();
+    }
+}
+
+bool ConstantFoldingTest::hasWarning()
+{
+    TInfoSink &infoSink = mTranslatorESSL->getInfoSink();
+    return infoSink.info.str().find("WARNING:") != std::string::npos;
+}
+
+void ConstantFoldingExpressionTest::evaluateFloat(const std::string &floatExpression)
+{
+    std::stringstream shaderStream;
+    shaderStream << "#version 300 es\n"
+                    "precision mediump float;\n"
+                    "out float my_FragColor;\n"
+                    "void main()\n"
+                    "{\n"
+                 << "    my_FragColor = " << floatExpression << ";\n"
+                 << "}\n";
+    compile(shaderStream.str());
+}
new file mode 100644
--- /dev/null
+++ b/gfx/angle/src/tests/test_utils/ConstantFoldingTest.h
@@ -0,0 +1,197 @@
+//
+// Copyright (c) 2016 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.
+//
+// ConstantFoldingTest.h:
+//   Utilities for constant folding tests.
+//
+
+#ifndef TESTS_TEST_UTILS_CONSTANTFOLDINGTEST_H_
+#define TESTS_TEST_UTILS_CONSTANTFOLDINGTEST_H_
+
+#include <vector>
+
+#include "common/mathutil.h"
+#include "compiler/translator/IntermNode.h"
+#include "compiler/translator/PoolAlloc.h"
+#include "gtest/gtest.h"
+
+namespace sh
+{
+
+class TranslatorESSL;
+
+template <typename T>
+class ConstantFinder : public TIntermTraverser
+{
+  public:
+    ConstantFinder(const std::vector<T> &constantVector)
+        : TIntermTraverser(true, false, false),
+          mConstantVector(constantVector),
+          mFaultTolerance(T()),
+          mFound(false)
+    {
+    }
+
+    ConstantFinder(const std::vector<T> &constantVector, const T &faultTolerance)
+        : TIntermTraverser(true, false, false),
+          mConstantVector(constantVector),
+          mFaultTolerance(faultTolerance),
+          mFound(false)
+    {
+    }
+
+    ConstantFinder(const T &value)
+        : TIntermTraverser(true, false, false), mFaultTolerance(T()), mFound(false)
+    {
+        mConstantVector.push_back(value);
+    }
+
+    void visitConstantUnion(TIntermConstantUnion *node)
+    {
+        if (node->getType().getObjectSize() == mConstantVector.size())
+        {
+            bool found = true;
+            for (size_t i = 0; i < mConstantVector.size(); i++)
+            {
+                if (!isEqual(node->getUnionArrayPointer()[i], mConstantVector[i]))
+                {
+                    found = false;
+                    break;
+                }
+            }
+            if (found)
+            {
+                mFound = found;
+            }
+        }
+    }
+
+    bool found() const { return mFound; }
+
+  private:
+    bool isEqual(const TConstantUnion &node, const float &value) const
+    {
+        if (node.getType() != EbtFloat)
+        {
+            return false;
+        }
+        if (value == std::numeric_limits<float>::infinity())
+        {
+            return gl::isInf(node.getFConst()) && node.getFConst() > 0;
+        }
+        else if (value == -std::numeric_limits<float>::infinity())
+        {
+            return gl::isInf(node.getFConst()) && node.getFConst() < 0;
+        }
+        else if (gl::isNaN(value))
+        {
+            // All NaNs are treated as equal.
+            return gl::isNaN(node.getFConst());
+        }
+        return mFaultTolerance >= fabsf(node.getFConst() - value);
+    }
+
+    bool isEqual(const TConstantUnion &node, const int &value) const
+    {
+        if (node.getType() != EbtInt)
+        {
+            return false;
+        }
+        ASSERT(mFaultTolerance < std::numeric_limits<int>::max());
+        // abs() returns 0 at least on some platforms when the minimum int value is passed in (it
+        // doesn't have a positive counterpart).
+        return mFaultTolerance >= abs(node.getIConst() - value) &&
+               (node.getIConst() - value) != std::numeric_limits<int>::min();
+    }
+
+    bool isEqual(const TConstantUnion &node, const unsigned int &value) const
+    {
+        if (node.getType() != EbtUInt)
+        {
+            return false;
+        }
+        ASSERT(mFaultTolerance < static_cast<unsigned int>(std::numeric_limits<int>::max()));
+        return static_cast<int>(mFaultTolerance) >=
+                   abs(static_cast<int>(node.getUConst() - value)) &&
+               static_cast<int>(node.getUConst() - value) != std::numeric_limits<int>::min();
+    }
+
+    bool isEqual(const TConstantUnion &node, const bool &value) const
+    {
+        if (node.getType() != EbtBool)
+        {
+            return false;
+        }
+        return node.getBConst() == value;
+    }
+
+    std::vector<T> mConstantVector;
+    T mFaultTolerance;
+    bool mFound;
+};
+
+class ConstantFoldingTest : public testing::Test
+{
+  public:
+    ConstantFoldingTest() {}
+
+  protected:
+    void SetUp() override;
+
+    void TearDown() override;
+
+    void compile(const std::string &shaderString);
+
+    // Must be called after compile()
+    bool hasWarning();
+
+    template <typename T>
+    bool constantFoundInAST(T constant)
+    {
+        ConstantFinder<T> finder(constant);
+        mASTRoot->traverse(&finder);
+        return finder.found();
+    }
+
+    template <typename T>
+    bool constantVectorFoundInAST(const std::vector<T> &constantVector)
+    {
+        ConstantFinder<T> finder(constantVector);
+        mASTRoot->traverse(&finder);
+        return finder.found();
+    }
+
+    template <typename T>
+    bool constantColumnMajorMatrixFoundInAST(const std::vector<T> &constantMatrix)
+    {
+        return constantVectorFoundInAST(constantMatrix);
+    }
+
+    template <typename T>
+    bool constantVectorNearFoundInAST(const std::vector<T> &constantVector, const T &faultTolerance)
+    {
+        ConstantFinder<T> finder(constantVector, faultTolerance);
+        mASTRoot->traverse(&finder);
+        return finder.found();
+    }
+
+  private:
+    TranslatorESSL *mTranslatorESSL;
+    TIntermNode *mASTRoot;
+
+    TPoolAllocator allocator;
+};
+
+class ConstantFoldingExpressionTest : public ConstantFoldingTest
+{
+  public:
+    ConstantFoldingExpressionTest() {}
+
+    void evaluateFloat(const std::string &floatExpression);
+};
+
+}  // namespace sh
+
+#endif  // TESTS_TEST_UTILS_CONSTANTFOLDINGTEST_H_
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/test_utils/angle_test_configs.cpp
+++ b/gfx/angle/src/tests/test_utils/angle_test_configs.cpp
@@ -65,17 +65,20 @@ std::ostream &operator<<(std::ostream& s
       case EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE:
         stream << "D3D11";
         break;
       case EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE:
         stream << "OPENGL";
         break;
       case EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE:
           stream << "OPENGLES";
-        break;
+          break;
+      case EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE:
+          stream << "NULL";
+          break;
       case EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE:
         stream << "DEFAULT";
         break;
       default:
         UNREACHABLE();
         break;
     }
 
@@ -590,9 +593,24 @@ PlatformParameters ES31_OPENGL()
     return PlatformParameters(3, 1, egl_platform::OPENGL());
 }
 
 PlatformParameters ES31_OPENGL(EGLint major, EGLint minor)
 {
     return PlatformParameters(3, 1, egl_platform::OPENGL(major, minor));
 }
 
+PlatformParameters ES2_NULL()
+{
+    return PlatformParameters(2, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
+}
+
+PlatformParameters ES3_NULL()
+{
+    return PlatformParameters(3, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
+}
+
+PlatformParameters ES31_NULL()
+{
+    return PlatformParameters(3, 1, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
+}
+
 } // namespace angle
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/test_utils/angle_test_configs.h
+++ b/gfx/angle/src/tests/test_utils/angle_test_configs.h
@@ -134,11 +134,15 @@ PlatformParameters ES31_OPENGL(EGLint ma
 
 PlatformParameters ES2_OPENGLES();
 PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor);
 PlatformParameters ES3_OPENGLES();
 PlatformParameters ES3_OPENGLES(EGLint major, EGLint minor);
 PlatformParameters ES31_OPENGLES();
 PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor);
 
+PlatformParameters ES2_NULL();
+PlatformParameters ES3_NULL();
+PlatformParameters ES31_NULL();
+
 } // namespace angle
 
 #endif // ANGLE_TEST_CONFIGS_H_
old mode 100755
new mode 100644
--- a/gfx/angle/src/tests/test_utils/angle_test_instantiate.cpp
+++ b/gfx/angle/src/tests/test_utils/angle_test_instantiate.cpp
@@ -40,16 +40,22 @@ bool IsPlatformAvailable(const PlatformP
 
       case EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE:
       case EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE:
 #ifndef ANGLE_ENABLE_OPENGL
         return false;
 #endif
         break;
 
+      case EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE:
+#ifndef ANGLE_ENABLE_NULL
+          return false;
+#endif
+          break;
+
       default:
         UNREACHABLE();
         break;
     }
 
     static std::map<PlatformParameters, bool> paramAvailabilityCache;
     auto iter = paramAvailabilityCache.find(param);
     if (iter != paramAvailabilityCache.end())
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644