Edit

kc3-lang/angle/src/libANGLE/ErrorStrings.h

Branch :

  • Show log

    Commit

  • Author : Yizhou Jiang
    Date : 2018-09-06 15:02:04
    Hash : 7818a85c
    Message : Implement GL_ANGLE_texture_multisample API part Support GL_ANGLE_texture_multisample extension. This patch adds enums of multisampled texture and texStorage2DMultisampleANGLE API. TEST=angle_end2end_tests.exe --gtest_filter=TextureMultisampleTest* TEST=angle_end2end_tests.exe --gtest_filter=NegativeTextureMultisampleTest.Negtive* BUG=angleproject:2275 Change-Id: I2cab997edc33aa2d0be6082381545335423f64e0 Reviewed-on: https://chromium-review.googlesource.com/c/804613 Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • src/libANGLE/ErrorStrings.h
  • //
    // Copyright (c) 2017 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.
    //
    
    // ErrorStrings.h: Contains mapping of commonly used error messages
    
    #ifndef LIBANGLE_ERRORSTRINGS_H_
    #define LIBANGLE_ERRORSTRINGS_H_
    
    #define ERRMSG(name, message) \
        static const constexpr char *kError##name = static_cast<const char *>(message);
    #define ANGLE_VALIDATION_ERR(context, error, errorName) \
        context->handleError(error << kError##errorName)
    
    namespace gl
    {
    ERRMSG(ANGLECopyTexture3DUnavailable, "GL_ANGLE_copy_texture_3d extension not available.");
    ERRMSG(BlitDimensionsOutOfRange, "BlitFramebuffer dimensions out of 32-bit integer range.");
    ERRMSG(BlitExtensionDepthStencilWholeBufferBlit,
           "Only whole-buffer depth and stencil blits are supported by this extension.");
    ERRMSG(BlitExtensionFormatMismatch,
           "Attempting to blit and the read and draw buffer formats don't match.");
    ERRMSG(BlitExtensionFromInvalidAttachmentType,
           "Blits are only supported from 2D texture, renderbuffer or default framebuffer attachments "
           "in this extension.");
    ERRMSG(BlitExtensionLinear, "Linear blit not supported in this extension.");
    ERRMSG(BlitExtensionMultisampledDepthOrStencil,
           "Multisampled depth/stencil blit is not supported by this extension.");
    ERRMSG(BlitExtensionMultisampledWholeBufferBlit,
           "Only whole-buffer blit is supported from a multisampled read buffer in this extension.");
    ERRMSG(BlitExtensionNotAvailable, "Blit extension not available.");
    ERRMSG(BlitExtensionScaleOrFlip,
           "Scaling and flipping in BlitFramebufferANGLE not supported by this implementation.");
    ERRMSG(BlitExtensionToInvalidAttachmentType,
           "Blits are only supported to 2D texture, renderbuffer or default framebuffer attachments in "
           "this extension.");
    ERRMSG(BlitFeedbackLoop, "Blit feedback loop: the read and draw framebuffers are the same.");
    ERRMSG(BlitFramebufferMissing, "Read and draw framebuffers must both exist for a blit to succeed.");
    ERRMSG(BlitFromMultiview, "Attempt to read from a multi-view framebuffer.");
    ERRMSG(BlitDepthOrStencilFormatMismatch,
           "Depth/stencil buffer format combination not allowed for blit.");
    ERRMSG(BlitIntegerWithLinearFilter,
           "Cannot use GL_LINEAR filter when blitting a integer framebuffer.");
    ERRMSG(BlitInvalidFilter, "Invalid blit filter.");
    ERRMSG(BlitInvalidMask, "Invalid blit mask.");
    ERRMSG(BlitMissingColor,
           "Attempt to read from a missing color attachment of a complete framebuffer.");
    ERRMSG(BlitMissingDepthOrStencil,
           "Attempt to read from a missing depth/stencil attachment of a complete framebuffer.");
    ERRMSG(BlitOnlyNearestForNonColor,
           "Only nearest filtering can be used when blitting buffers other than the color buffer.");
    ERRMSG(BlitToMultiview, "Attempt to write to a multi-view framebuffer.");
    ERRMSG(BlitTypeMismatchFixedOrFloat,
           "If the read buffer contains fixed-point or floating-point values, the draw buffer must as "
           "well.");
    ERRMSG(BlitTypeMismatchFixedPoint,
           "If the read buffer contains fixed-point values, the draw buffer must as well.");
    ERRMSG(BlitTypeMismatchSignedInteger,
           "If the read buffer contains signed integer values the draw buffer must as well.");
    ERRMSG(BlitTypeMismatchUnsignedInteger,
           "If the read buffer contains unsigned integer values the draw buffer must as well.");
    ERRMSG(BlitMultisampledBoundsMismatch,
           "Attempt to blit from a multisampled framebuffer and the bounds don't match with the draw "
           "framebuffer.");
    ERRMSG(BlitMultisampledFormatOrBoundsMismatch,
           "Attempt to blit from a multisampled framebuffer and the bounds or format of the color "
           "buffer don't match with the draw framebuffer.");
    ERRMSG(BlitSameImageColor, "Read and write color attachments cannot be the same image.");
    ERRMSG(BlitSameImageDepthOrStencil,
           "Read and write depth stencil attachments cannot be the same image.");
    ERRMSG(BufferBoundForTransformFeedback, "Buffer is bound for transform feedback.");
    ERRMSG(BufferNotBound, "A buffer must be bound.");
    ERRMSG(BufferMapped, "An active buffer is mapped");
    ERRMSG(ColorNumberGreaterThanMaxDualSourceDrawBuffers,
           "Color number for secondary color greater than or equal to MAX_DUAL_SOURCE_DRAW_BUFFERS");
    ERRMSG(ColorNumberGreaterThanMaxDrawBuffers,
           "Color number for primary color greater than or equal to MAX_DRAW_BUFFERS");
    ERRMSG(CompressedTextureDimensionsMustMatchData,
           "Compressed texture dimensions must exactly match the dimensions of the data passed in.");
    ERRMSG(CompressedTexturesNotAttachable, "Compressed textures cannot be attached to a framebuffer.");
    ERRMSG(CubemapFacesEqualDimensions, "Each cubemap face must have equal width and height.");
    ERRMSG(CubemapIncomplete,
           "Texture is not cubemap complete. All cubemaps faces must be defined and be the same size.");
    ERRMSG(DefaultFramebufferInvalidAttachment,
           "Invalid attachment when the default framebuffer is bound.");
    ERRMSG(DefaultFramebufferTarget, "It is invalid to change default FBO's attachments");
    ERRMSG(DestinationImmutable, "Destination texture cannot be immutable.");
    ERRMSG(DestinationLevelNotDefined,
           "The destination level of the destination texture must be defined.");
    ERRMSG(DestinationTextureTooSmall, "Destination texture too small.");
    ERRMSG(DispatchIndirectBufferNotBound, "Dispatch indirect buffer must be bound.");
    ERRMSG(DrawBufferTypeMismatch,
           "Fragment shader output type does not match the bound framebuffer attachment type.");
    ERRMSG(DrawFramebufferIncomplete, "Draw framebuffer is incomplete");
    ERRMSG(ElementArrayBufferBoundForTransformFeedback,
           "It is undefined behavior to use an element array buffer that is bound for transform "
           "feedback.");
    ERRMSG(EnumNotSupported, "Enum is not currently supported.");
    ERRMSG(EnumRequiresGLES31, "Enum requires GLES 3.1");
    ERRMSG(ES31Required, "OpenGL ES 3.1 Required");
    ERRMSG(ES3Required, "OpenGL ES 3.0 Required.");
    ERRMSG(ExceedsMaxElement, "Element value exceeds maximum element index.");
    ERRMSG(ExpectedProgramName, "Expected a program name, but found a shader name.");
    ERRMSG(ExpectedShaderName, "Expected a shader name, but found a program name.");
    ERRMSG(ExtensionNotEnabled, "Extension is not enabled.");
    ERRMSG(FeedbackLoop, "Feedback loop formed between Framebuffer and active Texture.");
    ERRMSG(FragDataBindingIndexOutOfRange, "Fragment output color index must be zero or one.");
    ERRMSG(FramebufferIncompleteAttachment,
           "Attachment type must be compatible with attachment object.");
    ERRMSG(FramebufferTextureInvalidLayer, "Layer invalid for framebuffer texture attachment.");
    ERRMSG(FramebufferTextureInvalidMipLevel, "Mip level invalid for framebuffer texture attachment.");
    ERRMSG(FramebufferTextureLayerIncorrectTextureType,
           "Texture is not a three-dimensional or two-dimensionsal array texture.");
    ERRMSG(GenerateMipmapNotAllowed, "Texture format does not support mipmap generation.");
    ERRMSG(GeometryShaderExtensionNotEnabled, "GL_EXT_geometry_shader extension not enabled.");
    ERRMSG(GLES1Only, "GLES1-only function.");
    ERRMSG(ImmutableTextureBound,
           "The value of TEXTURE_IMMUTABLE_FORMAT for the texture currently bound to target on the "
           "active texture unit is true.");
    ERRMSG(IncompatibleDrawModeAgainstGeometryShader,
           "Primitive mode is incompatible with the input primitive type of the geometry shader.");
    ERRMSG(IndexExceedsMaxActiveUniform, "Index exceeds program active uniform count.");
    ERRMSG(IndexExceedsMaxDrawBuffer, "Index exceeds MAX_DRAW_BUFFERS.");
    ERRMSG(IndexExceedsMaxVertexAttribute, "Index exceeds MAX_VERTEX_ATTRIBS.");
    ERRMSG(InsufficientBufferSize, "Insufficient buffer size.");
    ERRMSG(InsufficientVertexBufferSize, "Vertex buffer is not big enough for the draw call");
    ERRMSG(IntegerOverflow, "Integer overflow.");
    ERRMSG(InternalFormatRequiresTexture2DArray,
           "internalformat is an ETC2/EAC format and target is not GL_TEXTURE_2D_ARRAY.");
    ERRMSG(InvalidAttachment, "Invalid Attachment Type.");
    ERRMSG(InvalidBlendEquation, "Invalid blend equation.");
    ERRMSG(InvalidBlendFunction, "Invalid blend function.");
    ERRMSG(InvalidBorder, "Border must be 0.");
    ERRMSG(InvalidBufferTypes, "Invalid buffer target enum.");
    ERRMSG(InvalidBufferUsage, "Invalid buffer usage enum.");
    ERRMSG(InvalidClearMask, "Invalid mask bits.");
    ERRMSG(InvalidClientState, "Invalid client vertex array type.");
    ERRMSG(InvalidClipPlane, "Invalid clip plane.");
    ERRMSG(InvalidCombinedImageUnit,
           "Specified unit must be in [GL_TEXTURE0, GL_TEXTURE0 + GL_MAX_COMBINED_IMAGE_UNITS)");
    ERRMSG(InvalidConstantColor,
           "CONSTANT_COLOR (or ONE_MINUS_CONSTANT_COLOR) and CONSTANT_ALPHA (or "
           "ONE_MINUS_CONSTANT_ALPHA) cannot be used together as source and destination factors in the "
           "blend function.");
    ERRMSG(InvalidCoverMode, "Invalid cover mode.");
    ERRMSG(InvalidCullMode, "Cull mode not recognized.");
    ERRMSG(InvalidDebugSeverity, "Invalid debug severity.");
    ERRMSG(InvalidDebugSource, "Invalid debug source.");
    ERRMSG(InvalidDebugType, "Invalid debug type.");
    ERRMSG(InvalidDepthRange, "Near value cannot be greater than far.");
    ERRMSG(InvalidDestinationTexture, "Destination texture is not a valid texture object.");
    ERRMSG(InvalidDestinationTextureType, "Invalid destination texture type.");
    ERRMSG(InvalidDrawMode, "Invalid draw mode.");
    ERRMSG(InvalidDrawModeTransformFeedback,
           "Draw mode must match current transform feedback object's draw mode.");
    ERRMSG(InvalidFence, "Invalid fence object.");
    ERRMSG(InvalidFenceState, "Fence must be set.");
    ERRMSG(InvalidFillMode, "Invalid fill mode.");
    ERRMSG(InvalidFilterTexture, "Texture only supports NEAREST and LINEAR filtering.");
    ERRMSG(InvalidFogDensity, "Invalid fog density (must be nonnegative).");
    ERRMSG(InvalidFogMode, "Invalid fog mode.");
    ERRMSG(InvalidFogParameter, "Invalid fog parameter.");
    ERRMSG(InvalidFormat, "Invalid format.");
    ERRMSG(InvalidFramebufferTarget, "Invalid framebuffer target.");
    ERRMSG(InvalidFramebufferTextureLevel, "Mipmap level must be 0 when attaching a texture.");
    ERRMSG(InvalidFramebufferAttachmentParameter, "Invalid parameter name for framebuffer attachment.");
    ERRMSG(InvalidFramebufferLayer,
           "Framebuffer layer cannot be less than 0 or greater than GL_MAX_FRAMEBUFFER_LAYERS_EXT.");
    ERRMSG(InvalidImageUnit,
           "Image unit cannot be greater than or equal to the value of MAX_IMAGE_UNITS.");
    ERRMSG(InvalidInternalFormat, "Invalid internal format.");
    ERRMSG(InvalidLight, "Invalid light.");
    ERRMSG(InvalidLightModelParameter, "Invalid light model parameter.");
    ERRMSG(InvalidLightParameter, "Invalid light parameter.");
    ERRMSG(InvalidLogicOp, "Invalid logical operation.");
    ERRMSG(InvalidMaterialFace, "Invalid material face.");
    ERRMSG(InvalidMaterialParameter, "Invalid material parameter.");
    ERRMSG(InvalidMatrixMode, "Invalid matrix mode.");
    ERRMSG(InvalidMemoryBarrierBit, "Invalid memory barrier bit.");
    ERRMSG(InvalidMipLevel, "Level of detail outside of range.");
    ERRMSG(InvalidMultitextureUnit,
           "Specified unit must be in [GL_TEXTURE0, GL_TEXTURE0 + GL_MAX_TEXTURE_UNITS)");
    ERRMSG(InvalidMultisampledFramebufferOperation, "Invalid operation on multisampled framebuffer");
    ERRMSG(InvalidName, "Invalid name.");
    ERRMSG(InvalidNameCharacters, "Name contains invalid characters.");
    ERRMSG(InvalidPname, "Invalid pname.");
    ERRMSG(InvalidPointerQuery, "Invalid pointer query.");
    ERRMSG(InvalidPointParameter, "Invalid point parameter.");
    ERRMSG(InvalidPointParameterValue, "Invalid point parameter value (must be non-negative).");
    ERRMSG(InvalidPointSizeValue, "Invalid point size (must be positive).");
    ERRMSG(InvalidPrecision, "Invalid or unsupported precision type.");
    ERRMSG(InvalidProgramName, "Program object expected.");
    ERRMSG(InvalidProjectionMatrix,
           "Invalid projection matrix. Left/right, top/bottom, near/far intervals cannot be zero, and "
           "near/far cannot be less than zero.");
    ERRMSG(InvalidQueryId, "Invalid query Id.");
    ERRMSG(InvalidQueryTarget, "Invalid query target.");
    ERRMSG(InvalidQueryType, "Invalid query type.");
    ERRMSG(InvalidRange, "Invalid range.");
    ERRMSG(InvalidRenderbufferInternalFormat, "Invalid renderbuffer internalformat.");
    ERRMSG(InvalidRenderbufferTarget, "Invalid renderbuffer target.");
    ERRMSG(InvalidRenderbufferTextureParameter, "Invalid parameter name for renderbuffer attachment.");
    ERRMSG(InvalidRenderbufferWidthHeight,
           "Renderbuffer width and height cannot be negative and cannot exceed maximum texture size.");
    ERRMSG(InvalidSampleMaskNumber,
           "MaskNumber cannot be greater than or equal to the value of MAX_SAMPLE_MASK_WORDS.");
    ERRMSG(InvalidSampler, "Sampler is not valid");
    ERRMSG(InvalidShaderName, "Shader object expected.");
    ERRMSG(InvalidShaderType, "Invalid shader type.");
    ERRMSG(InvalidShadingModel, "Invalid shading model.");
    ERRMSG(InvalidSourceTexture, "Source texture is not a valid texture object.");
    ERRMSG(InvalidSourceTextureLevel, "Invalid source texture level.");
    ERRMSG(InvalidSourceTextureSize, "Invalid source texture height or width.");
    ERRMSG(InvalidStencil, "Invalid stencil.");
    ERRMSG(InvalidStencilBitMask, "Invalid stencil bit mask.");
    ERRMSG(InvalidTarget, "Invalid target.");
    ERRMSG(InvalidTextureCombine, "Invalid texture combine mode.");
    ERRMSG(InvalidTextureCombineSrc, "Invalid texture combine source.");
    ERRMSG(InvalidTextureCombineOp, "Invalid texture combine operand.");
    ERRMSG(InvalidTextureEnvMode, "Invalid texture environment mode.");
    ERRMSG(InvalidTextureEnvParameter, "Invalid texture environment parameter.");
    ERRMSG(InvalidTextureEnvScale, "Invalid texture environment scale.");
    ERRMSG(InvalidTextureEnvTarget, "Invalid texture environment target.");
    ERRMSG(InvalidTextureFilterParam, "Texture filter not recognized.");
    ERRMSG(InvalidTextureName, "Not a valid texture object name.");
    ERRMSG(InvalidTextureRange, "Cannot be less than 0 or greater than maximum number of textures.");
    ERRMSG(InvalidTextureTarget, "Invalid or unsupported texture target.");
    ERRMSG(InvalidTextureWrap, "Texture wrap mode not recognized.");
    ERRMSG(InvalidType, "Invalid type.");
    ERRMSG(InvalidTypePureInt, "Invalid type, should be integer");
    ERRMSG(InvalidUnpackAlignment, "Unpack alignment must be 1, 2, 4, or 8.");
    ERRMSG(InvalidVertexAttrSize, "Vertex attribute size must be 1, 2, 3, or 4.");
    ERRMSG(InvalidVertexPointerSize, "Size for built-in vertex attribute is outside allowed range.");
    ERRMSG(InvalidVertexPointerStride, "Invalid stride for built-in vertex attribute.");
    ERRMSG(InvalidVertexPointerType, "Invalid type for built-in vertex attribute.");
    ERRMSG(InvalidWidth, "Invalid width.");
    ERRMSG(InvalidWrapModeTexture, "Invalid wrap mode for texture type.");
    ERRMSG(LevelNotZero, "Texture level must be zero.");
    ERRMSG(LightParameterOutOfRange, "Light parameter out of range.");
    ERRMSG(MaterialParameterOutOfRange, "Material parameter out of range.");
    ERRMSG(MatrixStackOverflow, "Current matrix stack is full.");
    ERRMSG(MatrixStackUnderflow, "Current matrix stack has only a single matrix.");
    ERRMSG(MismatchedByteCountType, "Buffer size does not align with data type.");
    ERRMSG(MismatchedFormat, "Format must match internal format.");
    ERRMSG(MismatchedTargetAndFormat, "Invalid texture target and format combination.");
    ERRMSG(MismatchedTypeAndFormat, "Invalid format and type combination.");
    ERRMSG(MismatchedVariableProgram, "Variable is not part of the current program.");
    ERRMSG(MissingReadAttachment, "Missing read attachment.");
    ERRMSG(MustHaveElementArrayBinding, "Must have element array buffer binding.");
    ERRMSG(MultiviewMismatch,
           "The number of views in the active program and draw "
           "framebuffer does not match.");
    ERRMSG(MultiviewTransformFeedback,
           "There is an active transform feedback object when "
           "the number of views in the active draw framebuffer "
           "is greater than 1.");
    ERRMSG(MultiviewTimerQuery,
           "There is an active query for target "
           "GL_TIME_ELAPSED_EXT when the number of views in the "
           "active draw framebuffer is greater than 1.");
    ERRMSG(MultisampleArrayExtensionRequired, "GL_ANGLE_texture_multisample_array not enabled.");
    ERRMSG(MultisampleTextureExtensionOrES31Required,
           "GL_ANGLE_texture_multisample or GLES 3.1 required.");
    ERRMSG(NameBeginsWithGL, "Attributes that begin with 'gl_' are not allowed.");
    ERRMSG(NegativeAttachments, "Negative number of attachments.");
    ERRMSG(NegativeBufferSize, "Negative buffer size.");
    ERRMSG(NegativeCount, "Negative count.");
    ERRMSG(NegativeHeightWidthDepth, "Cannot have negative height, width, or depth.");
    ERRMSG(NegativeLength, "Negative length.");
    ERRMSG(NegativeMaxCount, "Negative maxcount.");
    ERRMSG(NegativeOffset, "Negative offset.");
    ERRMSG(NegativePrimcount, "Primcount must be greater than or equal to zero.");
    ERRMSG(NegativeSize, "Cannot have negative height or width.");
    ERRMSG(NegativeStart, "Cannot have negative start.");
    ERRMSG(NegativeStride, "Cannot have negative stride.");
    ERRMSG(NegativeXYZ, "x, y, or z cannot be negative.");
    ERRMSG(NoActiveComputeShaderStage, "No active compute shader stage in this program.");
    ERRMSG(NoActiveGeometryShaderStage, "No active geometry shader stage in this program.");
    ERRMSG(
        NoActiveGraphicsShaderStage,
        "It is a undefined behaviour to render without vertex shader stage or fragment shader stage.");
    ERRMSG(NoActiveProgramWithComputeShader, "No active program for the compute shader stage.");
    ERRMSG(NonPositiveDrawTextureDimension,
           "Both width and height argument of drawn texture must be positive.");
    ERRMSG(NoSuchPath, "No such path object.");
    ERRMSG(NoTransformFeedbackOutputVariables,
           "The active program has specified no output variables to record.");
    ERRMSG(NoZeroDivisor, "At least one enabled attribute must have a divisor of zero.");
    ERRMSG(NVFenceNotSupported, "GL_NV_fence is not supported");
    ERRMSG(ObjectNotGenerated, "Object cannot be used because it has not been generated.");
    ERRMSG(OffsetMustBeMultipleOfType, "Offset must be a multiple of the passed in datatype.");
    ERRMSG(OffsetMustBeMultipleOfUint,
           "Offset must be a multiple of the size, in basic machine units, of uint");
    ERRMSG(OutsideOfBounds, "Parameter outside of bounds.");
    ERRMSG(ParamOverflow, "The provided parameters overflow with the provided buffer.");
    ERRMSG(PixelDataNotNull, "Pixel data must be null.");
    ERRMSG(PixelDataNull, "Pixel data cannot be null.");
    ERRMSG(PixelPackBufferBoundForTransformFeedback,
           "It is undefined behavior to use a pixel pack buffer that is bound for transform feedback.");
    ERRMSG(
        PixelUnpackBufferBoundForTransformFeedback,
        "It is undefined behavior to use a pixel unpack buffer that is bound for transform feedback.");
    ERRMSG(PointSizeArrayExtensionNotEnabled, "GL_OES_point_size_array not enabled.");
    ERRMSG(ProgramDoesNotExist, "Program doesn't exist.");
    ERRMSG(ProgramInterfaceMustBeProgramOutput, "programInterface must be set to GL_PROGRAM_OUTPUT.");
    ERRMSG(ProgramNotBound, "A program must be bound.");
    ERRMSG(ProgramNotLinked, "Program not linked.");
    ERRMSG(QueryActive, "Query is active.");
    ERRMSG(QueryExtensionNotEnabled, "Query extension not enabled.");
    ERRMSG(ReadBufferNone, "Read buffer is GL_NONE.");
    ERRMSG(RenderableInternalFormat,
           "SizedInternalformat must be color-renderable, depth-renderable, or stencil-renderable.");
    ERRMSG(RenderbufferNotBound, "A renderbuffer must be bound.");
    ERRMSG(ResourceMaxTextureSize, "Desired resource size is greater than max texture size.");
    ERRMSG(SamplesZero, "Samples may not be zero.");
    ERRMSG(SamplesOutOfRange,
           "Samples must not be greater than maximum supported value for the format.");
    ERRMSG(ShaderAttachmentHasShader, "Shader attachment already has a shader.");
    ERRMSG(ShaderSourceInvalidCharacters, "Shader source contains invalid characters.");
    ERRMSG(ShaderToDetachMustBeAttached,
           "Shader to be detached must be currently attached to the program.");
    ERRMSG(SourceLevelNotDefined, "The source level of the source texture must be defined.");
    ERRMSG(SourceTextureTooSmall, "The specified dimensions are outside of the bounds of the texture.");
    ERRMSG(StencilReferenceMaskOrMismatch,
           "Stencil reference and mask values must be the same for front facing and back facing "
           "triangles.");
    ERRMSG(StrideMustBeMultipleOfType, "Stride must be a multiple of the passed in datatype.");
    ERRMSG(TargetMustBeTexture2DMultisampleArrayOES,
           "Target must be TEXTURE_2D_MULTISAMPLE_ARRAY_OES.");
    ERRMSG(TextureNotBound, "A texture must be bound.");
    ERRMSG(TextureNotPow2, "The texture is a non-power-of-two texture.");
    ERRMSG(TextureTargetRequiresES31, "Texture target requires at least OpenGL ES 3.1.");
    ERRMSG(TextureTypeConflict, "Two textures of different types use the same sampler location.");
    ERRMSG(TextureWidthOrHeightOutOfRange,
           "Width and height must be less than or equal to GL_MAX_TEXTURE_SIZE.");
    ERRMSG(TransformFeedbackBufferDoubleBound,
           "A transform feedback buffer that would be written to is also bound to a "
           "non-transform-feedback target, which would cause undefined behavior.");
    ERRMSG(TransformFeedbackBufferTooSmall, "Not enough space in bound transform feedback buffers.");
    ERRMSG(TransformFeedbackDoesNotExist, "Transform feedback object that does not exist.");
    ERRMSG(TypeMismatch,
           "Passed in texture target and format must match the one originally used to define the "
           "texture.");
    ERRMSG(TypeNotUnsignedShortByte, "Only UNSIGNED_SHORT and UNSIGNED_BYTE types are supported.");
    ERRMSG(UniformBufferBoundForTransformFeedback,
           "It is undefined behavior to use an uniform buffer that is bound for transform feedback.");
    ERRMSG(UniformBufferTooSmall,
           "It is undefined behaviour to use a uniform buffer that is too small.");
    ERRMSG(UniformBufferUnbound,
           "It is undefined behaviour to have a used but unbound uniform buffer.");
    ERRMSG(UniformSizeMismatch, "Uniform size does not match uniform method.");
    ERRMSG(UnknownParameter, "Unknown parameter value.");
    ERRMSG(UnsizedInternalFormatUnsupported,
           "Internalformat is one of the unsupported unsized base internalformats.");
    ERRMSG(UnsupportedDrawModeForTransformFeedback,
           "The draw command is unsupported when transform feedback is active and not paused.");
    ERRMSG(VertexArrayNoBuffer, "An enabled vertex array has no buffer.");
    ERRMSG(VertexArrayNoBufferPointer, "An enabled vertex array has no buffer and no pointer.");
    ERRMSG(VertexBufferBoundForTransformFeedback,
           "It is undefined behavior to use a vertex buffer that is bound for transform feedback.");
    ERRMSG(VertexShaderTypeMismatch,
           "Vertex shader input type does not match the type of the bound vertex attribute.")
    ERRMSG(ViewportNegativeSize, "Viewport size cannot be negative.");
    ERRMSG(Webgl2NameLengthLimitExceeded, "Location lengths must not be greater than 1024 characters.");
    ERRMSG(WebglBindAttribLocationReservedPrefix,
           "Attributes that begin with 'webgl_', or '_webgl_' are not allowed.");
    ERRMSG(WebglNameLengthLimitExceeded,
           "Location name lengths must not be greater than 256 characters.");
    ERRMSG(ZeroBoundToTarget, "Zero is bound to target.");
    }
    #undef ERRMSG
    #endif  // LIBANGLE_ERRORSTRINGS_H_