Give every validation error a constant.
Makes the code more consistent and organized.
Also reduces binary size by about 4k.
Also refactors validation for GetBufferPointerv.
Bug: angleproject:2957
Change-Id: Ib076ce936193e9840eef2499bf815489cdb48479
Reviewed-on: https://chromium-review.googlesource.com/c/1350489
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/validationES2.cpp b/src/libANGLE/validationES2.cpp
index a7ffba6..14860a4 100644
--- a/src/libANGLE/validationES2.cpp
+++ b/src/libANGLE/validationES2.cpp
@@ -96,20 +96,19 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
if (paths == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "No path name array.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathNameArray);
return false;
}
if (numPaths < 0)
{
- context->validationError(GL_INVALID_VALUE, "Invalid (negative) numPaths.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathNumPaths);
return false;
}
@@ -161,7 +160,7 @@
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid path name type.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathNameType);
return false;
}
@@ -189,12 +188,12 @@
componentCount = 12;
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid transformation.");
+ context->validationError(GL_INVALID_ENUM, kInvalidTransformation);
return false;
}
if (componentCount != 0 && transformValues == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "No transform array given.");
+ context->validationError(GL_INVALID_VALUE, kNoTransformArray);
return false;
}
@@ -481,7 +480,7 @@
TextureType texType = TextureTargetToType(target);
if (!ValidImageSizeParameters(context, texType, level, width, height, 1, isSubImage))
{
- context->validationError(GL_INVALID_VALUE, "Invalid texture dimensions.");
+ // Error is already handled.
return false;
}
@@ -721,14 +720,12 @@
case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
if (context->getExtensions().lossyETCDecode)
{
- context->validationError(GL_INVALID_OPERATION,
- "ETC lossy decode formats can't be copied to.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidFormat);
return false;
}
else
{
- context->validationError(GL_INVALID_ENUM,
- "ANGLE_lossy_etc_decode extension is not supported.");
+ context->validationError(GL_INVALID_ENUM, kEnumNotSupported);
return false;
}
break;
@@ -1044,8 +1041,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -1126,8 +1122,7 @@
{
case TextureType::Rectangle:
ASSERT(!context->getExtensions().textureRectangle);
- context->validationError(GL_INVALID_ENUM,
- "Context does not support GL_ANGLE_texture_rectangle");
+ context->validationError(GL_INVALID_ENUM, kTextureRectangleNotSupported);
break;
case TextureType::_3D:
@@ -1150,7 +1145,7 @@
case TextureType::External:
ASSERT(!context->getExtensions().eglImageExternal &&
!context->getExtensions().eglStreamConsumerExternal);
- context->validationError(GL_INVALID_ENUM, "External texture extension not enabled");
+ context->validationError(GL_INVALID_ENUM, kExternalTextureNotSupported);
break;
default:
@@ -1239,8 +1234,7 @@
}
if (isCompressed)
{
- context->validationError(GL_INVALID_ENUM,
- "Rectangle texture cannot have a compressed format.");
+ context->validationError(GL_INVALID_ENUM, kRectangleTextureCompressed);
return false;
}
break;
@@ -1277,7 +1271,7 @@
const InternalFormat &textureInternalFormat = *texture->getFormat(target, level).info;
if (textureInternalFormat.internalFormat == GL_NONE)
{
- context->validationError(GL_INVALID_OPERATION, "Texture level does not exist.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidTextureLevel);
return false;
}
@@ -1358,8 +1352,7 @@
height, texture->getWidth(target, level),
texture->getHeight(target, level)))
{
- context->validationError(GL_INVALID_OPERATION,
- "Invalid compressed format dimension.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidCompressedImageSize);
return false;
}
@@ -1373,8 +1366,7 @@
{
if (!ValidCompressedImageSize(context, actualInternalFormat, level, width, height))
{
- context->validationError(GL_INVALID_OPERATION,
- "Invalid compressed format dimension.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidCompressedImageSize);
return false;
}
}
@@ -1590,14 +1582,12 @@
case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
if (context->getExtensions().lossyETCDecode)
{
- context->validationError(GL_INVALID_OPERATION,
- "ETC lossy decode formats can't work with this type.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidFormat);
return false;
}
else
{
- context->validationError(GL_INVALID_ENUM,
- "ANGLE_lossy_etc_decode extension is not supported.");
+ context->validationError(GL_INVALID_ENUM, kEnumNotSupported);
return false;
}
break;
@@ -1637,9 +1627,7 @@
case GL_RGBA32F:
if (!context->getExtensions().colorBufferFloatRGBA)
{
- context->validationError(GL_INVALID_ENUM,
- "Sized GL_RGBA32F internal format requires "
- "GL_CHROMIUM_color_buffer_float_rgba");
+ context->validationError(GL_INVALID_ENUM, kInvalidFormat);
return false;
}
if (type != GL_FLOAT)
@@ -1657,9 +1645,7 @@
case GL_RGB32F:
if (!context->getExtensions().colorBufferFloatRGB)
{
- context->validationError(GL_INVALID_ENUM,
- "Sized GL_RGB32F internal format requires "
- "GL_CHROMIUM_color_buffer_float_rgb");
+ context->validationError(GL_INVALID_ENUM, kInvalidFormat);
return false;
}
if (type != GL_FLOAT)
@@ -1837,8 +1823,7 @@
case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
if (!context->getExtensions().lossyETCDecode)
{
- context->validationError(GL_INVALID_ENUM,
- "ANGLE_lossy_etc_decode extension is not supported.");
+ context->validationError(GL_INVALID_ENUM, kEnumNotSupported);
return false;
}
break;
@@ -2122,17 +2107,13 @@
{
if (source == GL_DONT_CARE || type == GL_DONT_CARE)
{
- context->validationError(
- GL_INVALID_OPERATION,
- "If count is greater than zero, source and severity cannot be GL_DONT_CARE.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidDebugSourceType);
return false;
}
if (severity != GL_DONT_CARE)
{
- context->validationError(
- GL_INVALID_OPERATION,
- "If count is greater than zero, severity must be GL_DONT_CARE.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidDebugSeverity);
return false;
}
}
@@ -2182,8 +2163,7 @@
size_t messageLength = (length < 0) ? strlen(buf) : length;
if (messageLength > context->getExtensions().maxDebugMessageLength)
{
- context->validationError(GL_INVALID_VALUE,
- "Message length is larger than GL_MAX_DEBUG_MESSAGE_LENGTH.");
+ context->validationError(GL_INVALID_VALUE, kExceedsMaxDebugMessageLength);
return false;
}
@@ -2249,17 +2229,14 @@
size_t messageLength = (length < 0) ? strlen(message) : length;
if (messageLength > context->getExtensions().maxDebugMessageLength)
{
- context->validationError(GL_INVALID_VALUE,
- "Message length is larger than GL_MAX_DEBUG_MESSAGE_LENGTH.");
+ context->validationError(GL_INVALID_VALUE, kExceedsMaxDebugMessageLength);
return false;
}
size_t currentStackSize = context->getGLState().getDebug().getGroupStackDepth();
if (currentStackSize >= context->getExtensions().maxDebugGroupStackDepth)
{
- context->validationError(
- GL_STACK_OVERFLOW,
- "Cannot push more than GL_MAX_DEBUG_GROUP_STACK_DEPTH debug groups.");
+ context->validationError(GL_STACK_OVERFLOW, kExceedsMaxDebugGroupStackDepth);
return false;
}
@@ -2277,7 +2254,7 @@
size_t currentStackSize = context->getGLState().getDebug().getGroupStackDepth();
if (currentStackSize <= 1)
{
- context->validationError(GL_STACK_UNDERFLOW, "Cannot pop the default debug group.");
+ context->validationError(GL_STACK_UNDERFLOW, kCannotPopDefaultDebugGroup);
return false;
}
@@ -2291,7 +2268,7 @@
case GL_BUFFER:
if (context->getBuffer(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid buffer.");
+ context->validationError(GL_INVALID_VALUE, kInvalidBufferName);
return false;
}
return true;
@@ -2299,7 +2276,7 @@
case GL_SHADER:
if (context->getShader(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid shader.");
+ context->validationError(GL_INVALID_VALUE, kInvalidShaderName);
return false;
}
return true;
@@ -2307,7 +2284,7 @@
case GL_PROGRAM:
if (context->getProgramNoResolveLink(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid program.");
+ context->validationError(GL_INVALID_VALUE, kInvalidProgramName);
return false;
}
return true;
@@ -2315,7 +2292,7 @@
case GL_VERTEX_ARRAY:
if (context->getVertexArray(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid vertex array.");
+ context->validationError(GL_INVALID_VALUE, kInvalidVertexArrayName);
return false;
}
return true;
@@ -2323,7 +2300,7 @@
case GL_QUERY:
if (context->getQuery(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid query.");
+ context->validationError(GL_INVALID_VALUE, kInvalidQueryName);
return false;
}
return true;
@@ -2331,8 +2308,7 @@
case GL_TRANSFORM_FEEDBACK:
if (context->getTransformFeedback(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE,
- "name is not a valid transform feedback.");
+ context->validationError(GL_INVALID_VALUE, kInvalidTransformFeedbackName);
return false;
}
return true;
@@ -2340,7 +2316,7 @@
case GL_SAMPLER:
if (context->getSampler(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid sampler.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSamplerName);
return false;
}
return true;
@@ -2348,7 +2324,7 @@
case GL_TEXTURE:
if (context->getTexture(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid texture.");
+ context->validationError(GL_INVALID_VALUE, kInvalidTextureName);
return false;
}
return true;
@@ -2356,7 +2332,7 @@
case GL_RENDERBUFFER:
if (context->getRenderbuffer(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid renderbuffer.");
+ context->validationError(GL_INVALID_VALUE, kInvalidRenderbufferName);
return false;
}
return true;
@@ -2364,13 +2340,13 @@
case GL_FRAMEBUFFER:
if (context->getFramebuffer(name) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid framebuffer.");
+ context->validationError(GL_INVALID_VALUE, kInvalidFramebufferName);
return false;
}
return true;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid identifier.");
+ context->validationError(GL_INVALID_ENUM, kInvalidIndentifier);
return false;
}
}
@@ -2393,8 +2369,7 @@
if (labelLength > context->getExtensions().maxLabelLength)
{
- context->validationError(GL_INVALID_VALUE,
- "Label length is larger than GL_MAX_LABEL_LENGTH.");
+ context->validationError(GL_INVALID_VALUE, kExceedsMaxLabelLength);
return false;
}
@@ -2457,7 +2432,7 @@
{
if (context->getSync(reinterpret_cast<GLsync>(const_cast<void *>(ptr))) == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "name is not a valid sync.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSyncPointer);
return false;
}
@@ -2712,11 +2687,7 @@
Framebuffer *framebuffer = state.getDrawFramebuffer();
if (framebuffer->getNumViews() > 1 && state.isQueryActive(QueryType::TimeElapsed))
{
- context->validationError(GL_INVALID_OPERATION,
- "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.");
+ context->validationError(GL_INVALID_OPERATION, kMultiviewTimerQuery);
return false;
}
}
@@ -2728,7 +2699,7 @@
{
if (!context->getExtensions().drawBuffers)
{
- context->validationError(GL_INVALID_OPERATION, "Extension not supported.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -2888,8 +2859,7 @@
if (target == TextureTarget::Rectangle)
{
- context->validationError(GL_INVALID_ENUM,
- "Rectangle texture cannot have a compressed format.");
+ context->validationError(GL_INVALID_ENUM, kRectangleTextureCompressed);
return false;
}
@@ -2989,6 +2959,12 @@
GLenum pname,
void **params)
{
+ if (!context->getExtensions().mapBuffer)
+ {
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
+ return false;
+ }
+
return ValidateGetBufferPointervBase(context, target, pname, nullptr, params);
}
@@ -2996,7 +2972,7 @@
{
if (!context->getExtensions().mapBuffer)
{
- context->validationError(GL_INVALID_OPERATION, "Map buffer extension not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3010,19 +2986,19 @@
if (buffer == nullptr)
{
- context->validationError(GL_INVALID_OPERATION, "Attempted to map buffer object zero.");
+ context->validationError(GL_INVALID_OPERATION, kBufferNotMappable);
return false;
}
if (access != GL_WRITE_ONLY_OES)
{
- context->validationError(GL_INVALID_ENUM, "Non-write buffer mapping not supported.");
+ context->validationError(GL_INVALID_ENUM, kInvalidAccessBits);
return false;
}
if (buffer->isMapped())
{
- context->validationError(GL_INVALID_OPERATION, "Buffer is already mapped.");
+ context->validationError(GL_INVALID_OPERATION, kBufferAlreadyMapped);
return false;
}
@@ -3033,7 +3009,7 @@
{
if (!context->getExtensions().mapBuffer)
{
- context->validationError(GL_INVALID_OPERATION, "Map buffer extension not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3048,7 +3024,7 @@
{
if (!context->getExtensions().mapBufferRange)
{
- context->validationError(GL_INVALID_OPERATION, "Map buffer range extension not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3069,8 +3045,7 @@
const auto &transformFeedbackBuffer = transformFeedback->getIndexedBuffer(i);
if (transformFeedbackBuffer.get() == buffer)
{
- context->validationError(GL_INVALID_OPERATION,
- "Buffer is currently bound for transform feedback.");
+ context->validationError(GL_INVALID_OPERATION, kBufferBoundForTransformFeedback);
return false;
}
}
@@ -3093,7 +3068,7 @@
{
if (!context->getExtensions().mapBufferRange)
{
- context->validationError(GL_INVALID_OPERATION, "Map buffer range extension not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3123,7 +3098,7 @@
if (!context->getGLState().isBindGeneratesResourceEnabled() &&
!context->isTextureGenerated(texture))
{
- context->validationError(GL_INVALID_OPERATION, "Texture was not generated");
+ context->validationError(GL_INVALID_OPERATION, kObjectNotGenerated);
return false;
}
@@ -3137,8 +3112,7 @@
{
if (!context->getExtensions().bindUniformLocation)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_bind_uniform_location is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3150,7 +3124,7 @@
if (location < 0)
{
- context->validationError(GL_INVALID_VALUE, "Location cannot be less than 0.");
+ context->validationError(GL_INVALID_VALUE, kNegativeLocation);
return false;
}
@@ -3158,10 +3132,7 @@
if (static_cast<size_t>(location) >=
(caps.maxVertexUniformVectors + caps.maxFragmentUniformVectors) * 4)
{
- context->validationError(GL_INVALID_VALUE,
- "Location must be less than "
- "(MAX_VERTEX_UNIFORM_VECTORS + "
- "MAX_FRAGMENT_UNIFORM_VECTORS) * 4");
+ context->validationError(GL_INVALID_VALUE, kInvalidBindUniformLocation);
return false;
}
@@ -3186,8 +3157,7 @@
{
if (!context->getExtensions().framebufferMixedSamples)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_framebuffer_mixed_samples is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
switch (components)
@@ -3198,9 +3168,7 @@
case GL_NONE:
break;
default:
- context->validationError(
- GL_INVALID_ENUM,
- "GLenum components is not one of GL_RGB, GL_RGBA, GL_ALPHA or GL_NONE.");
+ context->validationError(GL_INVALID_ENUM, kInvalidCoverageComponents);
return false;
}
@@ -3218,7 +3186,7 @@
if (matrix == nullptr)
{
- context->validationError(GL_INVALID_OPERATION, "Invalid matrix.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidPathMatrix);
return false;
}
@@ -3234,8 +3202,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3260,8 +3227,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3294,8 +3260,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
if (!context->isPathGenerated(path))
@@ -3306,28 +3271,28 @@
if (numCommands < 0)
{
- context->validationError(GL_INVALID_VALUE, "Invalid number of commands.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathNumCommands);
return false;
}
else if (numCommands > 0)
{
if (!commands)
{
- context->validationError(GL_INVALID_VALUE, "No commands array given.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathCommandsArray);
return false;
}
}
if (numCoords < 0)
{
- context->validationError(GL_INVALID_VALUE, "Invalid number of coordinates.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathNumCoords);
return false;
}
else if (numCoords > 0)
{
if (!coords)
{
- context->validationError(GL_INVALID_VALUE, "No coordinate array given.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathNumCoordsArray);
return false;
}
}
@@ -3356,7 +3321,7 @@
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid coordinate type.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathCoordinateType);
return false;
}
@@ -3393,13 +3358,14 @@
expectedNumCoords += 5;
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid command.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathCommand);
return false;
}
}
+
if (expectedNumCoords != numCoords)
{
- context->validationError(GL_INVALID_VALUE, "Invalid number of coordinates.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathNumCoords);
return false;
}
@@ -3410,8 +3376,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
if (!context->isPathGenerated(path))
@@ -3425,7 +3390,7 @@
case GL_PATH_STROKE_WIDTH_CHROMIUM:
if (value < 0.0f)
{
- context->validationError(GL_INVALID_VALUE, "Invalid stroke width.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathStrokeWidth);
return false;
}
break;
@@ -3437,7 +3402,7 @@
case GL_ROUND_CHROMIUM:
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid end caps.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathEndCaps);
return false;
}
break;
@@ -3449,14 +3414,14 @@
case GL_ROUND_CHROMIUM:
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid join style.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathJoinStyle);
return false;
}
break;
case GL_PATH_MITER_LIMIT_CHROMIUM:
if (value < 0.0f)
{
- context->validationError(GL_INVALID_VALUE, "Invalid miter limit.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathMiterLimit);
return false;
}
break;
@@ -3466,7 +3431,7 @@
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid path parameter.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathParameter);
return false;
}
return true;
@@ -3482,8 +3447,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3492,9 +3456,10 @@
context->validationError(GL_INVALID_OPERATION, kNoSuchPath);
return false;
}
+
if (!value)
{
- context->validationError(GL_INVALID_VALUE, "No value array.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathValueArray);
return false;
}
@@ -3508,7 +3473,7 @@
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid path parameter.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathParameter);
return false;
}
@@ -3525,8 +3490,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3559,8 +3523,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
if (context->isPathGenerated(path) && !context->isPath(path))
@@ -3592,13 +3555,13 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
+
if (context->isPathGenerated(path) && !context->isPath(path))
{
- context->validationError(GL_INVALID_OPERATION, "No such path or path has no data.");
+ context->validationError(GL_INVALID_OPERATION, kNoPathOrNoPathData);
return false;
}
@@ -3609,8 +3572,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
if (context->isPathGenerated(path) && !context->isPath(path))
@@ -3665,8 +3627,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
return true;
@@ -3857,15 +3818,14 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
const GLint MaxLocation = context->getCaps().maxVaryingVectors * 4;
if (location >= MaxLocation)
{
- context->validationError(GL_INVALID_VALUE, "Location exceeds max varying.");
+ context->validationError(GL_INVALID_VALUE, kInvalidVaryingLocation);
return false;
}
@@ -3878,7 +3838,7 @@
if (!name)
{
- context->validationError(GL_INVALID_VALUE, "No name given.");
+ context->validationError(GL_INVALID_VALUE, kMissingName);
return false;
}
@@ -3900,8 +3860,7 @@
{
if (!context->getExtensions().pathRendering)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_path_rendering is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -3923,7 +3882,7 @@
case GL_NONE:
if (components != 0)
{
- context->validationError(GL_INVALID_VALUE, "Invalid components.");
+ context->validationError(GL_INVALID_VALUE, kInvalidComponents);
return false;
}
break;
@@ -3933,18 +3892,18 @@
case GL_CONSTANT_CHROMIUM:
if (components < 1 || components > 4)
{
- context->validationError(GL_INVALID_VALUE, "Invalid components.");
+ context->validationError(GL_INVALID_VALUE, kInvalidComponents);
return false;
}
if (!coeffs)
{
- context->validationError(GL_INVALID_VALUE, "No coefficients array given.");
+ context->validationError(GL_INVALID_VALUE, kInvalidPathCoefficientsArray);
return false;
}
break;
default:
- context->validationError(GL_INVALID_ENUM, "Invalid gen mode.");
+ context->validationError(GL_INVALID_ENUM, kInvalidPathGenMode);
return false;
}
@@ -3957,7 +3916,7 @@
if (!binding.valid)
{
- context->validationError(GL_INVALID_OPERATION, "No such binding.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidFragmentInputBinding);
return false;
}
@@ -3979,14 +3938,12 @@
expectedComponents = 4;
break;
default:
- context->validationError(
- GL_INVALID_OPERATION,
- "Fragment input type is not a floating point scalar or vector.");
+ context->validationError(GL_INVALID_OPERATION, kFragmentInputTypeNotFloatingPoint);
return false;
}
if (expectedComponents != components && genMode != GL_NONE)
{
- context->validationError(GL_INVALID_OPERATION, "Unexpected number of components");
+ context->validationError(GL_INVALID_OPERATION, kInvalidPathComponents);
return false;
}
}
@@ -4007,15 +3964,14 @@
{
if (!context->getExtensions().copyTexture)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_copy_texture extension not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
const Texture *source = context->getTexture(sourceId);
if (source == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "Source texture is not a valid texture object.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSourceTexture);
return false;
}
@@ -4031,7 +3987,7 @@
if (!IsValidCopyTextureSourceLevel(context, sourceType, sourceLevel))
{
- context->validationError(GL_INVALID_VALUE, "Source texture level is not valid.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSourceTextureLevel);
return false;
}
@@ -4046,8 +4002,7 @@
const InternalFormat &sourceFormat = *source->getFormat(sourceTarget, sourceLevel).info;
if (!IsValidCopyTextureSourceInternalFormatEnum(sourceFormat.internalFormat))
{
- context->validationError(GL_INVALID_OPERATION,
- "Source texture internal format is invalid.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidSourceTextureInternalFormat);
return false;
}
@@ -4060,14 +4015,13 @@
const Texture *dest = context->getTexture(destId);
if (dest == nullptr)
{
- context->validationError(GL_INVALID_VALUE,
- "Destination texture is not a valid texture object.");
+ context->validationError(GL_INVALID_VALUE, kInvalidDestinationTexture);
return false;
}
if (!IsValidCopyTextureDestinationTarget(context, dest->getType(), destTarget))
{
- context->validationError(GL_INVALID_VALUE, "Destination texture a valid texture type.");
+ context->validationError(GL_INVALID_VALUE, kInvalidDestinationTextureType);
return false;
}
@@ -4085,14 +4039,13 @@
if (dest->getType() == TextureType::CubeMap && sourceWidth != sourceHeight)
{
- context->validationError(
- GL_INVALID_VALUE, "Destination width and height must be equal for cube map textures.");
+ context->validationError(GL_INVALID_VALUE, kCubemapFacesEqualDimensions);
return false;
}
if (dest->getImmutableFormat())
{
- context->validationError(GL_INVALID_OPERATION, "Destination texture is immutable.");
+ context->validationError(GL_INVALID_OPERATION, kDestinationImmutable);
return false;
}
@@ -4117,21 +4070,20 @@
{
if (!context->getExtensions().copyTexture)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_copy_texture extension not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
const Texture *source = context->getTexture(sourceId);
if (source == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "Source texture is not a valid texture object.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSourceTexture);
return false;
}
if (!IsValidCopyTextureSourceTarget(context, source->getType()))
{
- context->validationError(GL_INVALID_VALUE, "Source texture a valid texture type.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSourceTextureType);
return false;
}
@@ -4148,14 +4100,13 @@
if (source->getWidth(sourceTarget, sourceLevel) == 0 ||
source->getHeight(sourceTarget, sourceLevel) == 0)
{
- context->validationError(GL_INVALID_VALUE,
- "The source level of the source texture must be defined.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSourceTextureLevel);
return false;
}
if (x < 0 || y < 0)
{
- context->validationError(GL_INVALID_VALUE, "x and y cannot be negative.");
+ context->validationError(GL_INVALID_VALUE, kNegativeOffset);
return false;
}
@@ -4188,37 +4139,33 @@
const Texture *dest = context->getTexture(destId);
if (dest == nullptr)
{
- context->validationError(GL_INVALID_VALUE,
- "Destination texture is not a valid texture object.");
+ context->validationError(GL_INVALID_VALUE, kInvalidDestinationTexture);
return false;
}
if (!IsValidCopyTextureDestinationTarget(context, dest->getType(), destTarget))
{
- context->validationError(GL_INVALID_VALUE, "Destination texture a valid texture type.");
+ context->validationError(GL_INVALID_VALUE, kInvalidDestinationTextureType);
return false;
}
if (!IsValidCopyTextureDestinationLevel(context, dest->getType(), destLevel, width, height,
true))
{
- context->validationError(GL_INVALID_VALUE, "Destination texture level is not valid.");
+ context->validationError(GL_INVALID_VALUE, kInvalidMipLevel);
return false;
}
if (dest->getWidth(destTarget, destLevel) == 0 || dest->getHeight(destTarget, destLevel) == 0)
{
- context->validationError(
- GL_INVALID_OPERATION,
- "The destination level of the destination texture must be defined.");
+ context->validationError(GL_INVALID_OPERATION, kDestinationLevelNotDefined);
return false;
}
const InternalFormat &destFormat = *dest->getFormat(destTarget, destLevel).info;
if (!IsValidCopySubTextureDestionationInternalFormat(destFormat.internalFormat))
{
- context->validationError(GL_INVALID_OPERATION,
- "Destination internal format and type combination is not valid.");
+ context->validationError(GL_INVALID_OPERATION, kInvalidFormatCombination);
return false;
}
@@ -4231,8 +4178,7 @@
if (static_cast<size_t>(xoffset + width) > dest->getWidth(destTarget, destLevel) ||
static_cast<size_t>(yoffset + height) > dest->getHeight(destTarget, destLevel))
{
- context->validationError(GL_INVALID_VALUE,
- "Destination texture not large enough to copy to.");
+ context->validationError(GL_INVALID_VALUE, kOffsetOverflow);
return false;
}
@@ -4243,57 +4189,53 @@
{
if (!context->getExtensions().copyCompressedTexture)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_CHROMIUM_copy_compressed_texture extension not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
const gl::Texture *source = context->getTexture(sourceId);
if (source == nullptr)
{
- context->validationError(GL_INVALID_VALUE, "Source texture is not a valid texture object.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSourceTexture);
return false;
}
if (source->getType() != TextureType::_2D)
{
- context->validationError(GL_INVALID_VALUE, "Source texture must be of type GL_TEXTURE_2D.");
+ context->validationError(GL_INVALID_VALUE, kInvalidSourceTextureType);
return false;
}
if (source->getWidth(TextureTarget::_2D, 0) == 0 ||
source->getHeight(TextureTarget::_2D, 0) == 0)
{
- context->validationError(GL_INVALID_VALUE, "Source texture must level 0 defined.");
+ context->validationError(GL_INVALID_VALUE, kSourceTextureLevelZeroDefined);
return false;
}
const gl::Format &sourceFormat = source->getFormat(TextureTarget::_2D, 0);
if (!sourceFormat.info->compressed)
{
- context->validationError(GL_INVALID_OPERATION,
- "Source texture must have a compressed internal format.");
+ context->validationError(GL_INVALID_OPERATION, kSourceTextureMustBeCompressed);
return false;
}
const gl::Texture *dest = context->getTexture(destId);
if (dest == nullptr)
{
- context->validationError(GL_INVALID_VALUE,
- "Destination texture is not a valid texture object.");
+ context->validationError(GL_INVALID_VALUE, kInvalidDestinationTexture);
return false;
}
if (dest->getType() != TextureType::_2D)
{
- context->validationError(GL_INVALID_VALUE,
- "Destination texture must be of type GL_TEXTURE_2D.");
+ context->validationError(GL_INVALID_VALUE, kInvalidDestinationTextureType);
return false;
}
if (dest->getImmutableFormat())
{
- context->validationError(GL_INVALID_OPERATION, "Destination cannot be immutable.");
+ context->validationError(GL_INVALID_OPERATION, kDestinationImmutable);
return false;
}
@@ -4459,14 +4401,13 @@
{
if (!context->getExtensions().requestExtension)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_ANGLE_request_extension is not available.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
if (!context->isExtensionRequestable(name))
{
- context->validationError(GL_INVALID_OPERATION, "Extension is not requestable.");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotRequestable);
return false;
}
@@ -4683,20 +4624,14 @@
if (constantColorUsed && constantAlphaUsed)
{
- const char *msg;
if (context->getExtensions().webglCompatibility)
{
- msg = kInvalidConstantColor;
+ context->validationError(GL_INVALID_OPERATION, kInvalidConstantColor);
+ return false;
}
- else
- {
- msg =
- "Simultaneous use of GL_CONSTANT_ALPHA/GL_ONE_MINUS_CONSTANT_ALPHA and "
- "GL_CONSTANT_COLOR/GL_ONE_MINUS_CONSTANT_COLOR not supported by this "
- "implementation.";
- WARN() << msg;
- }
- context->validationError(GL_INVALID_OPERATION, msg);
+
+ WARN() << kConstantColorAlphaLimitation;
+ context->validationError(GL_INVALID_OPERATION, kConstantColorAlphaLimitation);
return false;
}
}
@@ -4766,15 +4701,13 @@
{
if (stride > caps.maxVertexAttribStride)
{
- context->validationError(GL_INVALID_VALUE,
- "stride cannot be greater than MAX_VERTEX_ATTRIB_STRIDE.");
+ context->validationError(GL_INVALID_VALUE, kExceedsMaxVertexAttribStride);
return false;
}
if (index >= caps.maxVertexAttribBindings)
{
- context->validationError(GL_INVALID_VALUE,
- "index must be smaller than MAX_VERTEX_ATTRIB_BINDINGS.");
+ context->validationError(GL_INVALID_VALUE, kExceedsMaxVertexAttribBindings);
return false;
}
}
@@ -4788,9 +4721,7 @@
if (!nullBufferAllowed && context->getGLState().getTargetBuffer(BufferBinding::Array) == 0 &&
ptr != nullptr)
{
- context->validationError(
- GL_INVALID_OPERATION,
- "Client data cannot be used with a non-default vertex array object.");
+ context->validationError(GL_INVALID_OPERATION, kClientDataInVertexArray);
return false;
}
@@ -4800,7 +4731,7 @@
// The WebGL API does not support the GL_FIXED data type.
if (type == GL_FIXED)
{
- context->validationError(GL_INVALID_ENUM, "GL_FIXED is not supported in WebGL.");
+ context->validationError(GL_INVALID_ENUM, kFixedNotInWebGL);
return false;
}
@@ -4843,8 +4774,7 @@
{
if (!context->getExtensions().framebufferMultisample)
{
- context->validationError(GL_INVALID_OPERATION,
- "GL_ANGLE_framebuffer_multisample not available");
+ context->validationError(GL_INVALID_OPERATION, kExtensionNotEnabled);
return false;
}
@@ -5274,8 +5204,7 @@
case GL_FRAGMENT_SHADER:
break;
case GL_COMPUTE_SHADER:
- context->validationError(GL_INVALID_OPERATION,
- "compute shader precision not yet implemented.");
+ context->validationError(GL_INVALID_OPERATION, kUnimplementedComputeShaderPrecision);
return false;
default:
context->validationError(GL_INVALID_ENUM, kInvalidShaderType);
@@ -5375,8 +5304,7 @@
if (context->getClientVersion() < ES_3_0 &&
!context->getExtensions().standardDerivatives)
{
- context->validationError(GL_INVALID_ENUM,
- "hint requires OES_standard_derivatives.");
+ context->validationError(GL_INVALID_ENUM, kEnumNotSupported);
return false;
}
break;
@@ -5465,7 +5393,7 @@
if (param < 0)
{
- context->validationError(GL_INVALID_VALUE, "Cannot use negative values in PixelStorei");
+ context->validationError(GL_INVALID_VALUE, kNegativeParam);
return false;
}
@@ -5549,7 +5477,7 @@
if (std::find(shaderBinaryFormats.begin(), shaderBinaryFormats.end(), binaryformat) ==
shaderBinaryFormats.end())
{
- context->validationError(GL_INVALID_ENUM, "Invalid shader binary format.");
+ context->validationError(GL_INVALID_ENUM, kInvalidShaderBinaryFormat);
return false;
}
@@ -5950,12 +5878,11 @@
if (context->getLimitations().noSampleAlphaToCoverageSupport &&
cap == GL_SAMPLE_ALPHA_TO_COVERAGE)
{
- const char *errorMessage = "Current renderer doesn't support alpha-to-coverage";
- context->validationError(GL_INVALID_OPERATION, errorMessage);
+ context->validationError(GL_INVALID_OPERATION, kNoSampleAlphaToCoveragesLimitation);
// We also output an error message to the debugger window if tracing is active, so that
// developers can see the error message.
- ERR() << errorMessage;
+ ERR() << kNoSampleAlphaToCoveragesLimitation;
return false;
}
@@ -6038,8 +5965,7 @@
}
if (tex->getType() != TextureType::Rectangle)
{
- context->validationError(GL_INVALID_OPERATION,
- "Textarget must match the texture target type.");
+ context->validationError(GL_INVALID_OPERATION, kTextureTargetMismatch);
return false;
}
}
@@ -6059,8 +5985,7 @@
}
if (tex->getType() != TextureType::CubeMap)
{
- context->validationError(GL_INVALID_OPERATION,
- "Textarget must match the texture target type.");
+ context->validationError(GL_INVALID_OPERATION, kTextureTargetMismatch);
return false;
}
}
@@ -6083,8 +6008,7 @@
}
if (tex->getType() != TextureType::_2DMultisample)
{
- context->validationError(GL_INVALID_OPERATION,
- "Textarget must match the texture target type.");
+ context->validationError(GL_INVALID_OPERATION, kTextureTargetMismatch);
return false;
}
}
@@ -6310,10 +6234,7 @@
if (context->hasActiveTransformFeedback(program))
{
// ES 3.0.4 section 2.15 page 91
- context->validationError(GL_INVALID_OPERATION,
- "Cannot link program while program is "
- "associated with an active transform "
- "feedback object.");
+ context->validationError(GL_INVALID_OPERATION, kTransformFeedbackActiveDuringLink);
return false;
}
@@ -6416,9 +6337,7 @@
if (context->getGLState().isTransformFeedbackActiveUnpaused())
{
// ES 3.0.4 section 2.15 page 91
- context->validationError(
- GL_INVALID_OPERATION,
- "Cannot change active program while transform feedback is unpaused.");
+ context->validationError(GL_INVALID_OPERATION, kTransformFeedbackUseProgram);
return false;
}
@@ -6663,16 +6582,11 @@
{
if (index == 0 && divisor != 0)
{
- const char *errorMessage =
- "The current context doesn't support setting a non-zero divisor on the "
- "attribute with index zero. "
- "Please reorder the attributes in your vertex shader so that attribute zero "
- "can have a zero divisor.";
- context->validationError(GL_INVALID_OPERATION, errorMessage);
+ context->validationError(GL_INVALID_OPERATION, kAttributeZeroRequiresDivisorLimitation);
// We also output an error message to the debugger window if tracing is active, so
// that developers can see the error message.
- ERR() << errorMessage;
+ ERR() << kAttributeZeroRequiresDivisorLimitation;
return false;
}
}