Add a ContextImpl class.
This class can contain impl-specific functionality for a Context.
This will eventually replace the Renderer class, and we can then
start passing around a gl::Context instead of gl::ContextState.
In D3D11, the ContextImpl could hold a DeferredContext, which would
enable multi-thread rendering. In GL, we can implement non-virtual
(native) Contexts. In Vulkan it might store the logical device.
BUG=angleproject:1363
Change-Id: I39617e6d1a605d1a9574832e4d322400b09867ec
Reviewed-on: https://chromium-review.googlesource.com/340745
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index a41bfa7..0b589ff 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -75,7 +75,7 @@
// enough backing data.
if (attribDataSize + attribOffset > buffer->getSize())
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION,
"Vertex buffer is not big enough for the draw call"));
return false;
@@ -86,7 +86,7 @@
{
// This is an application error that would normally result in a crash,
// but we catch it and return an error
- context->recordError(Error(
+ context->handleError(Error(
GL_INVALID_OPERATION, "An enabled vertex array has no buffer and no pointer."));
return false;
}
@@ -415,12 +415,12 @@
{
if (context->getShader(id))
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION, "Expected a program name, but found a shader name"));
}
else
{
- context->recordError(Error(GL_INVALID_VALUE, "Program name is not valid"));
+ context->handleError(Error(GL_INVALID_VALUE, "Program name is not valid"));
}
}
@@ -437,12 +437,12 @@
{
if (context->getProgram(id))
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION, "Expected a shader name, but found a program name"));
}
else
{
- context->recordError(Error(GL_INVALID_VALUE, "Shader name is invalid"));
+ context->handleError(Error(GL_INVALID_VALUE, "Shader name is invalid"));
}
}
@@ -457,7 +457,7 @@
if (colorAttachment >= context->getCaps().maxColorAttachments)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
}
@@ -472,13 +472,13 @@
case GL_DEPTH_STENCIL_ATTACHMENT:
if (context->getClientVersion() < 3)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
}
@@ -494,20 +494,20 @@
case GL_RENDERBUFFER:
break;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
if (width < 0 || height < 0 || samples < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
if (!formatCaps.renderable)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -517,20 +517,20 @@
const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalformat);
if (formatInfo.pixelBytes == 0)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
if (static_cast<GLuint>(std::max(width, height)) > context->getCaps().maxRenderbufferSize)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
GLuint handle = context->getState().getRenderbufferId();
if (handle == 0)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -547,7 +547,7 @@
// generated.
if (static_cast<GLuint>(samples) > context->getCaps().maxSamples)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -560,7 +560,7 @@
const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
if (static_cast<GLuint>(samples) > formatCaps.getMaxSamples())
{
- context->recordError(Error(GL_OUT_OF_MEMORY));
+ context->handleError(Error(GL_OUT_OF_MEMORY));
return false;
}
}
@@ -573,7 +573,7 @@
{
if (!ValidFramebufferTarget(target))
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -582,7 +582,8 @@
ASSERT(framebuffer);
if (framebuffer->id() == 0)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Cannot change default FBO's attachments"));
+ context->handleError(
+ Error(GL_INVALID_OPERATION, "Cannot change default FBO's attachments"));
return false;
}
@@ -599,7 +600,7 @@
{
if (!context->getRenderbuffer(renderbuffer))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -626,13 +627,13 @@
case GL_LINEAR:
break;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
if ((mask & ~(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)) != 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -647,13 +648,13 @@
// color buffer, leaving only nearest being unfiltered from above
if ((mask & ~GL_COLOR_BUFFER_BIT) != 0 && filter != GL_NEAREST)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (context->getState().getReadFramebuffer()->id() == context->getState().getDrawFramebuffer()->id())
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -662,25 +663,25 @@
if (!readFramebuffer || !drawFramebuffer)
{
- context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
+ context->handleError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
return false;
}
if (!readFramebuffer->checkStatus(context->getData()))
{
- context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
+ context->handleError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
return false;
}
if (!drawFramebuffer->checkStatus(context->getData()))
{
- context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
+ context->handleError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
return false;
}
if (drawFramebuffer->getSamples(context->getData()) != 0)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -727,7 +728,7 @@
if (readFixedOrFloat != drawFixedOrFloat)
{
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"If the read buffer contains fixed-point or "
"floating-point values, the draw buffer "
"must as well."));
@@ -736,7 +737,7 @@
}
else if (readFixedPoint != drawFixedPoint)
{
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"If the read buffer contains fixed-point "
"values, the draw buffer must as well."));
return false;
@@ -745,19 +746,19 @@
if (readComponentType == GL_UNSIGNED_INT &&
drawComponentType != GL_UNSIGNED_INT)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (readComponentType == GL_INT && drawComponentType != GL_INT)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (readColorBuffer->getSamples() > 0 && (readInternalFormat != drawInternalFormat || !sameBounds))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -765,7 +766,7 @@
if ((readFormatInfo.componentType == GL_INT || readFormatInfo.componentType == GL_UNSIGNED_INT) && filter == GL_LINEAR)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -784,13 +785,13 @@
{
if (readBuffer->getInternalFormat() != drawBuffer->getInternalFormat())
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (readBuffer->getSamples() > 0 && !sameBounds)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -823,13 +824,13 @@
case GL_VERTEX_ATTRIB_ARRAY_INTEGER:
if (context->getClientVersion() < 3)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
}
@@ -853,7 +854,7 @@
// written against ES2.
if (context->getClientVersion() < 3 || target == GL_TEXTURE_EXTERNAL_OES)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
@@ -875,13 +876,13 @@
if (target == GL_TEXTURE_EXTERNAL_OES)
{
// OES_EGL_image_external specifies this error.
- context->recordError(Error(
+ context->handleError(Error(
GL_INVALID_ENUM, "external textures only support CLAMP_TO_EDGE wrap mode"));
return false;
}
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -898,14 +899,14 @@
if (target == GL_TEXTURE_EXTERNAL_OES)
{
// OES_EGL_image_external specifies this error.
- context->recordError(
+ context->handleError(
Error(GL_INVALID_ENUM,
"external textures only support NEAREST and LINEAR filtering"));
return false;
}
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
@@ -917,7 +918,7 @@
case GL_LINEAR:
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
@@ -929,7 +930,7 @@
case GL_FRAMEBUFFER_ATTACHMENT_ANGLE:
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
@@ -937,14 +938,14 @@
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (!context->getExtensions().textureFilterAnisotropic)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
// we assume the parameter passed to this validation method is truncated, not rounded
if (param < 1)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
return true;
@@ -962,7 +963,7 @@
case GL_COMPARE_REF_TO_TEXTURE:
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
@@ -981,7 +982,7 @@
case GL_NEVER:
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
@@ -1000,7 +1001,7 @@
case GL_ONE:
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
@@ -1009,13 +1010,13 @@
case GL_TEXTURE_MAX_LEVEL:
if (param < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
}
@@ -1036,7 +1037,7 @@
return true;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
}
@@ -1052,7 +1053,7 @@
{
if (width < 0 || height < 0)
{
- context->recordError(Error(GL_INVALID_VALUE, "width and height must be positive"));
+ context->handleError(Error(GL_INVALID_VALUE, "width and height must be positive"));
return false;
}
@@ -1061,21 +1062,21 @@
if (framebuffer->checkStatus(context->getData()) != GL_FRAMEBUFFER_COMPLETE)
{
- context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
+ context->handleError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
return false;
}
if (context->getState().getReadFramebuffer()->id() != 0 &&
framebuffer->getSamples(context->getData()) != 0)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
const FramebufferAttachment *readBuffer = framebuffer->getReadColorbuffer();
if (!readBuffer)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1089,7 +1090,7 @@
if (!(currentFormat == format && currentType == type) && !validReadFormat)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1108,7 +1109,7 @@
{
if (bufSize < 0)
{
- context->recordError(Error(GL_INVALID_VALUE, "bufSize must be a positive number"));
+ context->handleError(Error(GL_INVALID_VALUE, "bufSize must be a positive number"));
return false;
}
@@ -1122,7 +1123,7 @@
int requiredSize = outputPitch * height;
if (requiredSize > bufSize)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1134,7 +1135,7 @@
if (!context->getExtensions().occlusionQueryBoolean &&
!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
return false;
}
@@ -1146,7 +1147,7 @@
if (!context->getExtensions().occlusionQueryBoolean &&
!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
return false;
}
@@ -1157,13 +1158,13 @@
{
if (!ValidQueryType(context, target))
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid query target"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid query target"));
return false;
}
if (id == 0)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query id is 0"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query id is 0"));
return false;
}
@@ -1185,7 +1186,7 @@
if (context->getState().isQueryActive(target))
{
- context->recordError(Error(GL_INVALID_OPERATION, "Other query is active"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Other query is active"));
return false;
}
@@ -1194,14 +1195,14 @@
// check that name was obtained with glGenQueries
if (!queryObject)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Invalid query id"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Invalid query id"));
return false;
}
// check for type mismatch
if (queryObject->getType() != target)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query type does not match target"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query type does not match target"));
return false;
}
@@ -1213,7 +1214,7 @@
if (!context->getExtensions().occlusionQueryBoolean &&
!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
return false;
}
@@ -1224,7 +1225,7 @@
{
if (!ValidQueryType(context, target))
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid query target"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid query target"));
return false;
}
@@ -1232,7 +1233,7 @@
if (queryObject == nullptr)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query target not active"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query target not active"));
return false;
}
@@ -1244,7 +1245,7 @@
if (!context->getExtensions().occlusionQueryBoolean &&
!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
return false;
}
@@ -1255,26 +1256,26 @@
{
if (!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Disjoint timer query not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Disjoint timer query not enabled"));
return false;
}
if (target != GL_TIMESTAMP_EXT)
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid query target"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid query target"));
return false;
}
Query *queryObject = context->getQuery(id, true, target);
if (queryObject == nullptr)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Invalid query id"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Invalid query id"));
return false;
}
if (context->getState().isQueryActive(queryObject))
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query is active"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query is active"));
return false;
}
@@ -1285,7 +1286,7 @@
{
if (!ValidQueryType(context, target) && target != GL_TIMESTAMP_EXT)
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid query type"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid query type"));
return false;
}
@@ -1294,7 +1295,7 @@
case GL_CURRENT_QUERY_EXT:
if (target == GL_TIMESTAMP_EXT)
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_ENUM, "Cannot use current query for timestamp"));
return false;
}
@@ -1303,12 +1304,12 @@
if (!context->getExtensions().disjointTimerQuery ||
(target != GL_TIMESTAMP_EXT && target != GL_TIME_ELAPSED_EXT))
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid pname"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid pname"));
return false;
}
break;
default:
- context->recordError(Error(GL_INVALID_ENUM, "Invalid pname"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid pname"));
return false;
}
@@ -1320,7 +1321,7 @@
if (!context->getExtensions().occlusionQueryBoolean &&
!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
return false;
}
@@ -1333,13 +1334,13 @@
if (!queryObject)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query does not exist"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query does not exist"));
return false;
}
if (context->getState().isQueryActive(queryObject))
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query currently active"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query currently active"));
return false;
}
@@ -1350,7 +1351,7 @@
break;
default:
- context->recordError(Error(GL_INVALID_ENUM, "Invalid pname enum"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid pname enum"));
return false;
}
@@ -1361,7 +1362,7 @@
{
if (!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Timer query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Timer query extension not enabled"));
return false;
}
return ValidateGetQueryObjectValueBase(context, id, pname);
@@ -1372,7 +1373,7 @@
if (!context->getExtensions().disjointTimerQuery &&
!context->getExtensions().occlusionQueryBoolean)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Query extension not enabled"));
return false;
}
return ValidateGetQueryObjectValueBase(context, id, pname);
@@ -1382,7 +1383,7 @@
{
if (!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Timer query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Timer query extension not enabled"));
return false;
}
return ValidateGetQueryObjectValueBase(context, id, pname);
@@ -1392,7 +1393,7 @@
{
if (!context->getExtensions().disjointTimerQuery)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Timer query extension not enabled"));
+ context->handleError(Error(GL_INVALID_OPERATION, "Timer query extension not enabled"));
return false;
}
return ValidateGetQueryObjectValueBase(context, id, pname);
@@ -1406,14 +1407,14 @@
{
if (count < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
gl::Program *program = context->getState().getProgram();
if (!program)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1425,7 +1426,7 @@
if (!program->isValidUniformLocation(location))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1434,7 +1435,7 @@
// attempting to write an array to a non-array uniform is an INVALID_OPERATION
if (!uniform.isArray() && count > 1)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1447,7 +1448,7 @@
// Check for ES3 uniform entry points
if (VariableComponentType(uniformType) == GL_UNSIGNED_INT && context->getClientVersion() < 3)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1461,7 +1462,7 @@
bool samplerUniformCheck = (IsSamplerType(uniform->type) && uniformType == GL_INT);
if (!samplerUniformCheck && uniformType != uniform->type && targetBoolType != uniform->type)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1476,13 +1477,13 @@
int cols = VariableColumnCount(matrixType);
if (rows != cols && context->getClientVersion() < 3)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (transpose != GL_FALSE && context->getClientVersion() < 3)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -1494,7 +1495,7 @@
if (uniform->type != matrixType)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1505,7 +1506,7 @@
{
if (!context->getQueryParameterInfo(pname, nativeType, numParams))
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -1517,7 +1518,7 @@
if (colorAttachment >= caps.maxDrawBuffers)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -1532,7 +1533,7 @@
case GL_TEXTURE_BINDING_EXTERNAL_OES:
if (!context->getExtensions().eglStreamConsumerExternal)
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_ENUM, "NV_EGL_stream_consumer_external extension not enabled"));
return false;
}
@@ -1545,14 +1546,14 @@
ASSERT(framebuffer);
if (framebuffer->checkStatus(context->getData()) != GL_FRAMEBUFFER_COMPLETE)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
const FramebufferAttachment *attachment = framebuffer->getReadColorbuffer();
if (!attachment)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -1588,39 +1589,39 @@
{
if (level < 0 || xoffset < 0 || yoffset < 0 || zoffset < 0 || width < 0 || height < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
if (std::numeric_limits<GLsizei>::max() - xoffset < width || std::numeric_limits<GLsizei>::max() - yoffset < height)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
if (border != 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
if (!ValidMipLevel(context, target, level))
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
const gl::Framebuffer *framebuffer = context->getState().getReadFramebuffer();
if (framebuffer->checkStatus(context->getData()) != GL_FRAMEBUFFER_COMPLETE)
{
- context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
+ context->handleError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
return false;
}
const auto &state = context->getState();
if (state.getReadFramebuffer()->id() != 0 && framebuffer->getSamples(context->getData()) != 0)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1651,7 +1652,7 @@
break;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -1659,13 +1660,13 @@
state.getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
if (!texture)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (texture->getImmutableFormat() && !isSubImage)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1673,13 +1674,13 @@
if (formatInfo.depthBits > 0)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (formatInfo.compressed && !ValidCompressedImageSize(context, internalformat, width, height))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1689,7 +1690,7 @@
static_cast<size_t>(yoffset + height) > texture->getHeight(target, level) ||
static_cast<size_t>(zoffset) >= texture->getDepth(target, level))
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
}
@@ -1697,20 +1698,20 @@
{
if (IsCubeMapTextureTarget(target) && width != height)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
if (!formatInfo.textureSupport(context->getClientVersion(), context->getExtensions()))
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
int maxLevelDimension = (maxDimension >> level);
if (static_cast<int>(width) > maxLevelDimension || static_cast<int>(height) > maxLevelDimension)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
}
@@ -1735,13 +1736,13 @@
case GL_TRIANGLE_FAN:
break;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
if (count < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -1750,7 +1751,7 @@
// Check for mapped buffers
if (state.hasMappedBuffer(GL_ARRAY_BUFFER))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1772,7 +1773,7 @@
ERR(
"This ANGLE implementation does not support separate front/back stencil "
"writemasks, reference values, or stencil mask values.");
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -1780,20 +1781,20 @@
const gl::Framebuffer *fbo = state.getDrawFramebuffer();
if (!fbo || fbo->checkStatus(context->getData()) != GL_FRAMEBUFFER_COMPLETE)
{
- context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
+ context->handleError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
return false;
}
gl::Program *program = state.getProgram();
if (!program)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (!program->validateSamplers(NULL, context->getCaps()))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1808,7 +1809,9 @@
if (uniformBuffer.get() == nullptr)
{
// undefined behaviour
- context->recordError(Error(GL_INVALID_OPERATION, "It is undefined behaviour to have a used but unbound uniform buffer."));
+ context->handleError(
+ Error(GL_INVALID_OPERATION,
+ "It is undefined behaviour to have a used but unbound uniform buffer."));
return false;
}
@@ -1822,7 +1825,9 @@
if (uniformBufferSize < uniformBlock.dataSize)
{
// undefined behaviour
- context->recordError(Error(GL_INVALID_OPERATION, "It is undefined behaviour to use a uniform buffer that is too small."));
+ context->handleError(
+ Error(GL_INVALID_OPERATION,
+ "It is undefined behaviour to use a uniform buffer that is too small."));
return false;
}
}
@@ -1835,7 +1840,7 @@
{
if (first < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -1847,7 +1852,7 @@
// 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
// is active), (3.0.2, section 2.14, pg 86)
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1868,7 +1873,7 @@
{
if (primcount < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -1898,8 +1903,9 @@
}
}
- context->recordError(Error(GL_INVALID_OPERATION, "ANGLE_instanced_arrays requires that at least one active attribute"
- "has a divisor of zero."));
+ context->handleError(Error(GL_INVALID_OPERATION,
+ "ANGLE_instanced_arrays requires that at least one active attribute"
+ "has a divisor of zero."));
return false;
}
@@ -1929,12 +1935,12 @@
case GL_UNSIGNED_INT:
if (context->getClientVersion() < 3 && !context->getExtensions().elementIndexUint)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
break;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -1945,14 +1951,14 @@
{
// 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->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
// Check for mapped buffers
if (state.hasMappedBuffer(GL_ELEMENT_ARRAY_BUFFER))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1960,7 +1966,7 @@
gl::Buffer *elementArrayBuffer = vao->getElementArrayBuffer().get();
if (!indices && !elementArrayBuffer)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -1975,21 +1981,21 @@
if (static_cast<GLuint>(count) > (std::numeric_limits<GLuint>::max() / typeInfo.bytes) ||
byteCount > static_cast<GLint64>(std::numeric_limits<GLuint>::max()))
{
- context->recordError(Error(GL_OUT_OF_MEMORY));
+ context->handleError(Error(GL_OUT_OF_MEMORY));
return false;
}
// Check for reading past the end of the bound buffer object
if (byteCount > elementArrayBuffer->getSize())
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
else if (!indices)
{
// Catch this programming error here
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -2009,7 +2015,7 @@
state.isPrimitiveRestartEnabled(), indexRangeOut);
if (error.isError())
{
- context->recordError(error);
+ context->handleError(error);
return false;
}
}
@@ -2023,7 +2029,7 @@
// return an error if possible here.
if (static_cast<GLuint64>(indexRangeOut->end) >= context->getCaps().maxElementIndex)
{
- context->recordError(Error(GL_INVALID_OPERATION, g_ExceedsMaxElementErrorMessage));
+ context->handleError(Error(GL_INVALID_OPERATION, g_ExceedsMaxElementErrorMessage));
return false;
}
@@ -2046,7 +2052,7 @@
{
if (primcount < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -2080,7 +2086,7 @@
{
if (!ValidFramebufferTarget(target))
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -2095,13 +2101,13 @@
if (tex == NULL)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (level < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
}
@@ -2111,7 +2117,8 @@
if (framebuffer->id() == 0)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Cannot change default FBO's attachments"));
+ context->handleError(
+ Error(GL_INVALID_OPERATION, "Cannot change default FBO's attachments"));
return false;
}
@@ -2124,7 +2131,7 @@
// Attachments are required to be bound to level 0 without ES3 or the GL_OES_fbo_render_mipmap extension
if (context->getClientVersion() < 3 && !context->getExtensions().fboRenderMipmap && level != 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -2146,12 +2153,12 @@
{
if (level > gl::log2(caps.max2DTextureSize))
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
if (tex->getTarget() != GL_TEXTURE_2D)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -2166,26 +2173,26 @@
{
if (level > gl::log2(caps.maxCubeMapTextureSize))
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
if (tex->getTarget() != GL_TEXTURE_CUBE_MAP)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
break;
default:
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
const gl::InternalFormat &internalFormatInfo = gl::GetInternalFormatInfo(tex->getInternalFormat(textarget, level));
if (internalFormatInfo.compressed)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
}
@@ -2197,7 +2204,7 @@
{
if (program == 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(Error(GL_INVALID_VALUE));
return false;
}
@@ -2209,13 +2216,13 @@
if (!programObject || !programObject->isLinked())
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
if (!programObject->isValidUniformLocation(location))
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -2247,7 +2254,7 @@
size_t requiredBytes = VariableExternalSize(uniform.type);
if (static_cast<size_t>(bufSize) < requiredBytes)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -2269,7 +2276,7 @@
{
if (numAttachments < 0)
{
- context->recordError(Error(GL_INVALID_VALUE, "numAttachments must not be less than zero"));
+ context->handleError(Error(GL_INVALID_VALUE, "numAttachments must not be less than zero"));
return false;
}
@@ -2279,14 +2286,16 @@
{
if (defaultFramebuffer)
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid attachment when the default framebuffer is bound"));
+ context->handleError(Error(
+ GL_INVALID_ENUM, "Invalid attachment when the default framebuffer is bound"));
return false;
}
if (attachments[i] >= GL_COLOR_ATTACHMENT0 + context->getCaps().maxColorAttachments)
{
- context->recordError(Error(GL_INVALID_OPERATION,
- "Requested color attachment is greater than the maximum supported color attachments"));
+ context->handleError(Error(GL_INVALID_OPERATION,
+ "Requested color attachment is greater than the maximum "
+ "supported color attachments"));
return false;
}
}
@@ -2299,7 +2308,9 @@
case GL_DEPTH_STENCIL_ATTACHMENT:
if (defaultFramebuffer)
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid attachment when the default framebuffer is bound"));
+ context->handleError(
+ Error(GL_INVALID_ENUM,
+ "Invalid attachment when the default framebuffer is bound"));
return false;
}
break;
@@ -2308,12 +2319,14 @@
case GL_STENCIL:
if (!defaultFramebuffer)
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid attachment when the default framebuffer is not bound"));
+ context->handleError(
+ Error(GL_INVALID_ENUM,
+ "Invalid attachment when the default framebuffer is not bound"));
return false;
}
break;
default:
- context->recordError(Error(GL_INVALID_ENUM, "Invalid attachment"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid attachment"));
return false;
}
}
@@ -2363,7 +2376,7 @@
{
if (!context->getExtensions().eglImage && !context->getExtensions().eglImageExternal)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -2373,19 +2386,19 @@
break;
default:
- context->recordError(Error(GL_INVALID_ENUM, "invalid texture target."));
+ context->handleError(Error(GL_INVALID_ENUM, "invalid texture target."));
return false;
}
if (!display->isValidImage(image))
{
- context->recordError(Error(GL_INVALID_VALUE, "EGL image is not valid."));
+ context->handleError(Error(GL_INVALID_VALUE, "EGL image is not valid."));
return false;
}
if (image->getSamples() > 0)
{
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"cannot create a 2D texture from a multisampled EGL image."));
return false;
}
@@ -2393,7 +2406,7 @@
const TextureCaps &textureCaps = context->getTextureCaps().get(image->getInternalFormat());
if (!textureCaps.texturable)
{
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"EGL image internal format is not supported as a texture."));
return false;
}
@@ -2408,7 +2421,7 @@
{
if (!context->getExtensions().eglImage)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -2418,20 +2431,20 @@
break;
default:
- context->recordError(Error(GL_INVALID_ENUM, "invalid renderbuffer target."));
+ context->handleError(Error(GL_INVALID_ENUM, "invalid renderbuffer target."));
return false;
}
if (!display->isValidImage(image))
{
- context->recordError(Error(GL_INVALID_VALUE, "EGL image is not valid."));
+ context->handleError(Error(GL_INVALID_VALUE, "EGL image is not valid."));
return false;
}
const TextureCaps &textureCaps = context->getTextureCaps().get(image->getInternalFormat());
if (!textureCaps.renderable)
{
- context->recordError(Error(
+ context->handleError(Error(
GL_INVALID_OPERATION, "EGL image internal format is not supported as a renderbuffer."));
return false;
}
@@ -2445,7 +2458,7 @@
{
// The default VAO should always exist
ASSERT(array != 0);
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(Error(GL_INVALID_OPERATION));
return false;
}
@@ -2457,7 +2470,7 @@
if (context->hasActiveTransformFeedback(program))
{
// ES 3.0.4 section 2.15 page 91
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"Cannot link program while program is associated with an active "
"transform feedback object."));
return false;
@@ -2481,14 +2494,14 @@
if (std::find(programBinaryFormats.begin(), programBinaryFormats.end(), binaryFormat) ==
programBinaryFormats.end())
{
- context->recordError(Error(GL_INVALID_ENUM, "Program binary format is not valid."));
+ context->handleError(Error(GL_INVALID_ENUM, "Program binary format is not valid."));
return false;
}
if (context->hasActiveTransformFeedback(program))
{
// ES 3.0.4 section 2.15 page 91
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"Cannot change program binary while program is associated with "
"an active transform feedback object."));
return false;
@@ -2512,7 +2525,7 @@
if (!programObject->isLinked())
{
- context->recordError(Error(GL_INVALID_OPERATION, "Program is not linked."));
+ context->handleError(Error(GL_INVALID_OPERATION, "Program is not linked."));
return false;
}
@@ -2529,27 +2542,27 @@
// ES 3.1.0 section 7.3 page 72
if (context->getShader(program))
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION,
"Attempted to use a single shader instead of a shader program."));
return false;
}
else
{
- context->recordError(Error(GL_INVALID_VALUE, "Program invalid."));
+ context->handleError(Error(GL_INVALID_VALUE, "Program invalid."));
return false;
}
}
if (!programObject->isLinked())
{
- context->recordError(Error(GL_INVALID_OPERATION, "Program not linked."));
+ context->handleError(Error(GL_INVALID_OPERATION, "Program not linked."));
return false;
}
}
if (context->getState().isTransformFeedbackActiveUnpaused())
{
// ES 3.0.4 section 2.15 page 91
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION,
"Cannot change active program while transform feedback is unpaused."));
return false;
@@ -2588,7 +2601,7 @@
if (!ValidFramebufferTarget(target) ||
(renderbuffertarget != GL_RENDERBUFFER && renderbuffer != 0))
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(Error(GL_INVALID_ENUM));
return false;
}
@@ -2601,7 +2614,7 @@
// INVALID_VALUE is generated if n is negative or greater than value of MAX_DRAW_BUFFERS
if (n < 0 || static_cast<GLuint>(n) > context->getCaps().maxDrawBuffers)
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_VALUE, "n must be non-negative and no greater than MAX_DRAW_BUFFERS"));
return false;
}
@@ -2626,12 +2639,12 @@
// was changed to GL_INVALID_ENUM in 3.1, which dEQP also expects.
// 3.1 is still a bit ambiguous about the error, but future specs are
// expected to clarify that GL_INVALID_ENUM is the correct error.
- context->recordError(Error(GL_INVALID_ENUM, "Invalid buffer value"));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid buffer value"));
return false;
}
else if (bufs[colorAttachment] >= maxColorAttachment)
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION, "Buffer value is greater than MAX_DRAW_BUFFERS"));
return false;
}
@@ -2640,7 +2653,7 @@
{
// INVALID_OPERATION-GL is bound to buffer and ith argument
// is not COLOR_ATTACHMENTi or NONE
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION, "Ith value does not match COLOR_ATTACHMENTi or NONE"));
return false;
}
@@ -2652,14 +2665,14 @@
{
if (n != 1)
{
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"n must be 1 when GL is bound to the default framebuffer"));
return false;
}
if (bufs[0] != GL_NONE && bufs[0] != GL_BACK)
{
- context->recordError(Error(
+ context->handleError(Error(
GL_INVALID_OPERATION,
"Only NONE or BACK are valid values when drawing to the default framebuffer"));
return false;
@@ -2693,13 +2706,13 @@
{
if (!ValidBufferTarget(context, target))
{
- context->recordError(Error(GL_INVALID_ENUM, "Buffer target not valid: 0x%X", target));
+ context->handleError(Error(GL_INVALID_ENUM, "Buffer target not valid: 0x%X", target));
return false;
}
if (pname != GL_BUFFER_MAP_POINTER)
{
- context->recordError(Error(GL_INVALID_ENUM, "pname not valid: 0x%X", pname));
+ context->handleError(Error(GL_INVALID_ENUM, "pname not valid: 0x%X", pname));
return false;
}
@@ -2710,7 +2723,7 @@
// GLES 3.1 section 6.6 explicitly specifies this error.
if (!buffer)
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION, "Can not get pointer for reserved buffer name zero."));
return false;
}
@@ -2722,7 +2735,7 @@
{
if (!ValidBufferTarget(context, target))
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid buffer target."));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid buffer target."));
return false;
}
@@ -2730,7 +2743,7 @@
if (buffer == nullptr || !buffer->isMapped())
{
- context->recordError(Error(GL_INVALID_OPERATION, "Buffer not mapped."));
+ context->handleError(Error(GL_INVALID_OPERATION, "Buffer not mapped."));
return false;
}
@@ -2745,13 +2758,13 @@
{
if (!ValidBufferTarget(context, target))
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid buffer target."));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid buffer target."));
return false;
}
if (offset < 0 || length < 0)
{
- context->recordError(Error(GL_INVALID_VALUE, "Invalid offset or length."));
+ context->handleError(Error(GL_INVALID_VALUE, "Invalid offset or length."));
return false;
}
@@ -2759,7 +2772,7 @@
if (!buffer)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Attempted to map buffer object zero."));
+ context->handleError(Error(GL_INVALID_OPERATION, "Attempted to map buffer object zero."));
return false;
}
@@ -2770,7 +2783,7 @@
if (!rx::IsUnsignedAdditionSafe(offsetSize, lengthSize) ||
offsetSize + lengthSize > static_cast<size_t>(buffer->getSize()))
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_VALUE, "Mapped range does not fit into buffer dimensions."));
return false;
}
@@ -2782,26 +2795,26 @@
if (access & ~(allAccessBits))
{
- context->recordError(Error(GL_INVALID_VALUE, "Invalid access bits: 0x%X.", access));
+ context->handleError(Error(GL_INVALID_VALUE, "Invalid access bits: 0x%X.", access));
return false;
}
if (length == 0)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Buffer mapping length is zero."));
+ context->handleError(Error(GL_INVALID_OPERATION, "Buffer mapping length is zero."));
return false;
}
if (buffer->isMapped())
{
- context->recordError(Error(GL_INVALID_OPERATION, "Buffer is already mapped."));
+ context->handleError(Error(GL_INVALID_OPERATION, "Buffer is already mapped."));
return false;
}
// Check for invalid bit combinations
if ((access & (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT)) == 0)
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_OPERATION, "Need to map buffer for either reading or writing."));
return false;
}
@@ -2811,7 +2824,7 @@
if ((access & GL_MAP_READ_BIT) != 0 && (access & writeOnlyBits) != 0)
{
- context->recordError(Error(GL_INVALID_OPERATION,
+ context->handleError(Error(GL_INVALID_OPERATION,
"Invalid access bits when mapping buffer for reading: 0x%X.",
access));
return false;
@@ -2819,7 +2832,7 @@
if ((access & GL_MAP_WRITE_BIT) == 0 && (access & GL_MAP_FLUSH_EXPLICIT_BIT) != 0)
{
- context->recordError(Error(
+ context->handleError(Error(
GL_INVALID_OPERATION,
"The explicit flushing bit may only be set if the buffer is mapped for writing."));
return false;
@@ -2834,13 +2847,13 @@
{
if (offset < 0 || length < 0)
{
- context->recordError(Error(GL_INVALID_VALUE, "Invalid offset/length parameters."));
+ context->handleError(Error(GL_INVALID_VALUE, "Invalid offset/length parameters."));
return false;
}
if (!ValidBufferTarget(context, target))
{
- context->recordError(Error(GL_INVALID_ENUM, "Invalid buffer target."));
+ context->handleError(Error(GL_INVALID_ENUM, "Invalid buffer target."));
return false;
}
@@ -2848,13 +2861,13 @@
if (buffer == nullptr)
{
- context->recordError(Error(GL_INVALID_OPERATION, "Attempted to flush buffer object zero."));
+ context->handleError(Error(GL_INVALID_OPERATION, "Attempted to flush buffer object zero."));
return false;
}
if (!buffer->isMapped() || (buffer->getAccessFlags() & GL_MAP_FLUSH_EXPLICIT_BIT) == 0)
{
- context->recordError(Error(
+ context->handleError(Error(
GL_INVALID_OPERATION, "Attempted to flush a buffer not mapped for explicit flushing."));
return false;
}
@@ -2866,7 +2879,7 @@
if (!rx::IsUnsignedAdditionSafe(offsetSize, lengthSize) ||
offsetSize + lengthSize > static_cast<size_t>(buffer->getMapLength()))
{
- context->recordError(
+ context->handleError(
Error(GL_INVALID_VALUE, "Flushed range does not fit into buffer mapping dimensions."));
return false;
}
@@ -2918,7 +2931,7 @@
{
if (n < 0)
{
- context->recordError(Error(GL_INVALID_VALUE, "n < 0"));
+ context->handleError(Error(GL_INVALID_VALUE, "n < 0"));
return false;
}
return true;