summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp')
-rw-r--r--src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp2922
1 files changed, 2471 insertions, 451 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp b/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
index 7df6fcb0cd..d4459ec287 100644
--- a/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
@@ -12,14 +12,20 @@
#include "libANGLE/Buffer.h"
#include "libANGLE/Context.h"
#include "libANGLE/Error.h"
+#include "libANGLE/ErrorStrings.h"
#include "libANGLE/Fence.h"
#include "libANGLE/Framebuffer.h"
-#include "libANGLE/Shader.h"
#include "libANGLE/Query.h"
+#include "libANGLE/Shader.h"
+#include "libANGLE/Thread.h"
+#include "libANGLE/VertexArray.h"
+#include "libANGLE/queryconversions.h"
+#include "libANGLE/queryutils.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES2.h"
#include "libANGLE/validationES3.h"
+#include "libANGLE/validationES31.h"
#include "common/debug.h"
#include "common/utilities.h"
@@ -27,6 +33,19 @@
namespace gl
{
+namespace
+{
+
+void SetRobustLengthParam(GLsizei *length, GLsizei value)
+{
+ if (length)
+ {
+ *length = value;
+ }
+}
+
+} // anonymous namespace
+
void GL_APIENTRY GenQueriesEXT(GLsizei n, GLuint *ids)
{
EVENT("(GLsizei n = %d, GLuint* ids = 0x%0.8p)", n, ids);
@@ -34,15 +53,12 @@ void GL_APIENTRY GenQueriesEXT(GLsizei n, GLuint *ids)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateGenQueriesEXT(context, n, ids))
+ if (!context->skipValidation() && !ValidateGenQueriesEXT(context, n, ids))
{
return;
}
- for (GLsizei i = 0; i < n; i++)
- {
- ids[i] = context->createQuery();
- }
+ context->genQueries(n, ids);
}
}
@@ -53,15 +69,12 @@ void GL_APIENTRY DeleteQueriesEXT(GLsizei n, const GLuint *ids)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateDeleteQueriesEXT(context, n, ids))
+ if (!context->skipValidation() && !ValidateDeleteQueriesEXT(context, n, ids))
{
return;
}
- for (int i = 0; i < n; i++)
- {
- context->deleteQuery(ids[i]);
- }
+ context->deleteQueries(n, ids);
}
}
@@ -72,7 +85,12 @@ GLboolean GL_APIENTRY IsQueryEXT(GLuint id)
Context *context = GetValidGlobalContext();
if (context)
{
- return (context->getQuery(id, false, GL_NONE) != NULL) ? GL_TRUE : GL_FALSE;
+ if (!context->skipValidation() && !ValidateIsQueryEXT(context, id))
+ {
+ return GL_FALSE;
+ }
+
+ return context->isQuery(id);
}
return GL_FALSE;
@@ -85,17 +103,12 @@ void GL_APIENTRY BeginQueryEXT(GLenum target, GLuint id)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateBeginQueryEXT(context, target, id))
+ if (!context->skipValidation() && !ValidateBeginQueryEXT(context, target, id))
{
return;
}
- Error error = context->beginQuery(target, id);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->beginQuery(target, id);
}
}
@@ -106,17 +119,12 @@ void GL_APIENTRY EndQueryEXT(GLenum target)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateEndQueryEXT(context, target))
+ if (!context->skipValidation() && !ValidateEndQueryEXT(context, target))
{
return;
}
- Error error = context->endQuery(target);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->endQuery(target);
}
}
@@ -127,17 +135,12 @@ void GL_APIENTRY QueryCounterEXT(GLuint id, GLenum target)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateQueryCounterEXT(context, id, target))
+ if (!context->skipValidation() && !ValidateQueryCounterEXT(context, id, target))
{
return;
}
- Error error = context->queryCounter(id, target);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->queryCounter(id, target);
}
}
@@ -170,12 +173,7 @@ void GL_APIENTRY GetQueryObjectivEXT(GLuint id, GLenum pname, GLint *params)
return;
}
- Error error = context->getQueryObjectiv(id, pname, params);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->getQueryObjectiv(id, pname, params);
}
}
@@ -191,12 +189,7 @@ void GL_APIENTRY GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)
return;
}
- Error error = context->getQueryObjectuiv(id, pname, params);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->getQueryObjectuiv(id, pname, params);
}
}
@@ -212,12 +205,7 @@ void GL_APIENTRY GetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 *params)
return;
}
- Error error = context->getQueryObjecti64v(id, pname, params);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->getQueryObjecti64v(id, pname, params);
}
}
@@ -233,12 +221,7 @@ void GL_APIENTRY GetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 *param
return;
}
- Error error = context->getQueryObjectui64v(id, pname, params);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->getQueryObjectui64v(id, pname, params);
}
}
@@ -251,7 +234,7 @@ void GL_APIENTRY DeleteFencesNV(GLsizei n, const GLuint *fences)
{
if (n < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(InvalidValue());
return;
}
@@ -278,43 +261,34 @@ void GL_APIENTRY DrawArraysInstancedANGLE(GLenum mode,
return;
}
- Error error = context->drawArraysInstanced(mode, first, count, primcount);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->drawArraysInstanced(mode, first, count, primcount);
}
}
void GL_APIENTRY DrawElementsInstancedANGLE(GLenum mode,
GLsizei count,
GLenum type,
- const GLvoid *indices,
+ const void *indices,
GLsizei primcount)
{
EVENT(
- "(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const GLvoid* indices = "
+ "(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const void* indices = "
"0x%0.8p, GLsizei primcount = %d)",
mode, count, type, indices, primcount);
Context *context = GetValidGlobalContext();
if (context)
{
- IndexRange indexRange;
- if (!ValidateDrawElementsInstancedANGLE(context, mode, count, type, indices, primcount,
- &indexRange))
- {
- return;
- }
+ context->gatherParams<EntryPoint::DrawElementsInstancedANGLE>(mode, count, type, indices,
+ primcount);
- Error error =
- context->drawElementsInstanced(mode, count, type, indices, primcount, indexRange);
- if (error.isError())
+ if (!context->skipValidation() &&
+ !ValidateDrawElementsInstancedANGLE(context, mode, count, type, indices, primcount))
{
- context->recordError(error);
return;
}
+
+ context->drawElementsInstanced(mode, count, type, indices, primcount);
}
}
@@ -327,19 +301,19 @@ void GL_APIENTRY FinishFenceNV(GLuint fence)
{
FenceNV *fenceObject = context->getFenceNV(fence);
- if (fenceObject == NULL)
+ if (fenceObject == nullptr)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return;
}
if (fenceObject->isSet() != GL_TRUE)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return;
}
- fenceObject->finish();
+ context->handleError(fenceObject->finish());
}
}
@@ -352,7 +326,7 @@ void GL_APIENTRY GenFencesNV(GLsizei n, GLuint *fences)
{
if (n < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(InvalidValue());
return;
}
@@ -365,39 +339,41 @@ void GL_APIENTRY GenFencesNV(GLsizei n, GLuint *fences)
void GL_APIENTRY GetFenceivNV(GLuint fence, GLenum pname, GLint *params)
{
- EVENT("(GLuint fence = %d, GLenum pname = 0x%X, GLint *params = 0x%0.8p)", fence, pname, params);
+ EVENT("(GLuint fence = %d, GLenum pname = 0x%X, GLint *params = 0x%0.8p)", fence, pname,
+ params);
Context *context = GetValidGlobalContext();
if (context)
{
FenceNV *fenceObject = context->getFenceNV(fence);
- if (fenceObject == NULL)
+ if (fenceObject == nullptr)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return;
}
if (fenceObject->isSet() != GL_TRUE)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return;
}
switch (pname)
{
- case GL_FENCE_STATUS_NV:
+ case GL_FENCE_STATUS_NV:
{
// GL_NV_fence spec:
- // Once the status of a fence has been finished (via FinishFenceNV) or tested and the returned status is TRUE (via either TestFenceNV
- // or GetFenceivNV querying the FENCE_STATUS_NV), the status remains TRUE until the next SetFenceNV of the fence.
+ // Once the status of a fence has been finished (via FinishFenceNV) or tested and
+ // the returned status is TRUE (via either TestFenceNV or GetFenceivNV querying the
+ // FENCE_STATUS_NV), the status remains TRUE until the next SetFenceNV of the fence.
GLboolean status = GL_TRUE;
if (fenceObject->getStatus() != GL_TRUE)
{
Error error = fenceObject->test(&status);
if (error.isError())
{
- context->recordError(error);
+ context->handleError(error);
return;
}
}
@@ -405,15 +381,15 @@ void GL_APIENTRY GetFenceivNV(GLuint fence, GLenum pname, GLint *params)
break;
}
- case GL_FENCE_CONDITION_NV:
+ case GL_FENCE_CONDITION_NV:
{
*params = static_cast<GLint>(fenceObject->getCondition());
break;
}
- default:
+ default:
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(InvalidEnum());
return;
}
}
@@ -434,17 +410,22 @@ GLenum GL_APIENTRY GetGraphicsResetStatusEXT(void)
return GL_NO_ERROR;
}
-void GL_APIENTRY GetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
+void GL_APIENTRY GetTranslatedShaderSourceANGLE(GLuint shader,
+ GLsizei bufsize,
+ GLsizei *length,
+ GLchar *source)
{
- EVENT("(GLuint shader = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLchar* source = 0x%0.8p)",
- shader, bufsize, length, source);
+ EVENT(
+ "(GLuint shader = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLchar* source = "
+ "0x%0.8p)",
+ shader, bufsize, length, source);
Context *context = GetValidGlobalContext();
if (context)
{
if (bufsize < 0)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(InvalidValue());
return;
}
@@ -452,18 +433,20 @@ void GL_APIENTRY GetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize,
if (!shaderObject)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return;
}
- shaderObject->getTranslatedSourceWithDebugInfo(bufsize, length, source);
+ shaderObject->getTranslatedSourceWithDebugInfo(context, bufsize, length, source);
}
}
-void GL_APIENTRY GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+void GL_APIENTRY GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat *params)
{
- EVENT("(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLfloat* params = 0x%0.8p)",
- program, location, bufSize, params);
+ EVENT(
+ "(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLfloat* params = "
+ "0x%0.8p)",
+ program, location, bufSize, params);
Context *context = GetValidGlobalContext();
if (context)
@@ -476,14 +459,15 @@ void GL_APIENTRY GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSiz
Program *programObject = context->getProgram(program);
ASSERT(programObject);
- programObject->getUniformfv(location, params);
+ programObject->getUniformfv(context, location, params);
}
}
-void GL_APIENTRY GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params)
+void GL_APIENTRY GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params)
{
- EVENT("(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLint* params = 0x%0.8p)",
- program, location, bufSize, params);
+ EVENT(
+ "(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLint* params = 0x%0.8p)",
+ program, location, bufSize, params);
Context *context = GetValidGlobalContext();
if (context)
@@ -496,7 +480,7 @@ void GL_APIENTRY GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSiz
Program *programObject = context->getProgram(program);
ASSERT(programObject);
- programObject->getUniformiv(location, params);
+ programObject->getUniformiv(context, location, params);
}
}
@@ -509,26 +493,33 @@ GLboolean GL_APIENTRY IsFenceNV(GLuint fence)
{
FenceNV *fenceObject = context->getFenceNV(fence);
- if (fenceObject == NULL)
+ if (fenceObject == nullptr)
{
return GL_FALSE;
}
// GL_NV_fence spec:
- // A name returned by GenFencesNV, but not yet set via SetFenceNV, is not the name of an existing fence.
+ // A name returned by GenFencesNV, but not yet set via SetFenceNV, is not the name of an
+ // existing fence.
return fenceObject->isSet();
}
return GL_FALSE;
}
-void GL_APIENTRY ReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum format, GLenum type, GLsizei bufSize,
- GLvoid *data)
+void GL_APIENTRY ReadnPixelsEXT(GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ void *data)
{
- EVENT("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, "
- "GLenum format = 0x%X, GLenum type = 0x%X, GLsizei bufSize = 0x%d, GLvoid *data = 0x%0.8p)",
- x, y, width, height, format, type, bufSize, data);
+ EVENT(
+ "(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, "
+ "GLenum format = 0x%X, GLenum type = 0x%X, GLsizei bufSize = 0x%d, void *data = 0x%0.8p)",
+ x, y, width, height, format, type, bufSize, data);
Context *context = GetValidGlobalContext();
if (context)
@@ -543,27 +534,28 @@ void GL_APIENTRY ReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
}
}
-void GL_APIENTRY RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY RenderbufferStorageMultisampleANGLE(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height)
{
- EVENT("(GLenum target = 0x%X, GLsizei samples = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)",
+ EVENT(
+ "(GLenum target = 0x%X, GLsizei samples = %d, GLenum internalformat = 0x%X, GLsizei width "
+ "= %d, GLsizei height = %d)",
target, samples, internalformat, width, height);
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateRenderbufferStorageParametersANGLE(context, target, samples, internalformat,
- width, height))
+ if (!context->skipValidation() &&
+ !ValidateRenderbufferStorageMultisampleANGLE(context, target, samples, internalformat,
+ width, height))
{
return;
}
- Renderbuffer *renderbuffer = context->getState().getCurrentRenderbuffer();
- Error error = renderbuffer->setStorageMultisample(samples, internalformat, width, height);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->renderbufferStorageMultisample(target, samples, internalformat, width, height);
}
}
@@ -576,22 +568,22 @@ void GL_APIENTRY SetFenceNV(GLuint fence, GLenum condition)
{
if (condition != GL_ALL_COMPLETED_NV)
{
- context->recordError(Error(GL_INVALID_ENUM));
+ context->handleError(InvalidEnum());
return;
}
FenceNV *fenceObject = context->getFenceNV(fence);
- if (fenceObject == NULL)
+ if (fenceObject == nullptr)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return;
}
Error error = fenceObject->set(condition);
if (error.isError())
{
- context->recordError(error);
+ context->handleError(error);
return;
}
}
@@ -606,15 +598,15 @@ GLboolean GL_APIENTRY TestFenceNV(GLuint fence)
{
FenceNV *fenceObject = context->getFenceNV(fence);
- if (fenceObject == NULL)
+ if (fenceObject == nullptr)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return GL_TRUE;
}
if (fenceObject->isSet() != GL_TRUE)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return GL_TRUE;
}
@@ -622,7 +614,7 @@ GLboolean GL_APIENTRY TestFenceNV(GLuint fence)
Error error = fenceObject->test(&result);
if (error.isError())
{
- context->recordError(error);
+ context->handleError(error);
return GL_TRUE;
}
@@ -632,41 +624,38 @@ GLboolean GL_APIENTRY TestFenceNV(GLuint fence)
return GL_TRUE;
}
-void GL_APIENTRY TexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY
+TexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{
- EVENT("(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)",
- target, levels, internalformat, width, height);
+ EVENT(
+ "(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = "
+ "%d, GLsizei height = %d)",
+ target, levels, internalformat, width, height);
Context *context = GetValidGlobalContext();
if (context)
{
if (!context->getExtensions().textureStorage)
{
- context->recordError(Error(GL_INVALID_OPERATION));
+ context->handleError(InvalidOperation());
return;
}
- if (context->getClientVersion() < 3 &&
- !ValidateES2TexStorageParameters(context, target, levels, internalformat, width, height))
+ if (context->getClientMajorVersion() < 3 &&
+ !ValidateES2TexStorageParameters(context, target, levels, internalformat, width,
+ height))
{
return;
}
- if (context->getClientVersion() >= 3 &&
+ if (context->getClientMajorVersion() >= 3 &&
!ValidateES3TexStorage2DParameters(context, target, levels, internalformat, width,
height, 1))
{
return;
}
- Extents size(width, height, 1);
- Texture *texture = context->getTargetTexture(target);
- Error error = texture->setStorage(target, levels, internalformat, size);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->texStorage2D(target, levels, internalformat, width, height);
}
}
@@ -677,9 +666,15 @@ void GL_APIENTRY VertexAttribDivisorANGLE(GLuint index, GLuint divisor)
Context *context = GetValidGlobalContext();
if (context)
{
+ if (!context->getExtensions().instancedArrays)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), ExtensionNotEnabled);
+ return;
+ }
+
if (index >= MAX_VERTEX_ATTRIBS)
{
- context->recordError(Error(GL_INVALID_VALUE));
+ context->handleError(InvalidValue());
return;
}
@@ -687,28 +682,41 @@ void GL_APIENTRY VertexAttribDivisorANGLE(GLuint index, GLuint divisor)
{
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->recordError(Error(GL_INVALID_OPERATION, errorMessage));
+ 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->handleError(InvalidOperation() << errorMessage);
- // We also output an error message to the debugger window if tracing is active, so that developers can see the error message.
- ERR("%s", errorMessage);
+ // We also output an error message to the debugger window if tracing is active, so
+ // that developers can see the error message.
+ ERR() << errorMessage;
return;
}
}
- context->setVertexAttribDivisor(index, divisor);
+ context->vertexAttribDivisor(index, divisor);
}
}
-void GL_APIENTRY BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
- GLbitfield mask, GLenum filter)
+void GL_APIENTRY BlitFramebufferANGLE(GLint srcX0,
+ GLint srcY0,
+ GLint srcX1,
+ GLint srcY1,
+ GLint dstX0,
+ GLint dstY0,
+ GLint dstX1,
+ GLint dstY1,
+ GLbitfield mask,
+ GLenum filter)
{
- EVENT("(GLint srcX0 = %d, GLint srcY0 = %d, GLint srcX1 = %d, GLint srcY1 = %d, "
- "GLint dstX0 = %d, GLint dstY0 = %d, GLint dstX1 = %d, GLint dstY1 = %d, "
- "GLbitfield mask = 0x%X, GLenum filter = 0x%X)",
- srcX0, srcY0, srcX1, srcX1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+ EVENT(
+ "(GLint srcX0 = %d, GLint srcY0 = %d, GLint srcX1 = %d, GLint srcY1 = %d, "
+ "GLint dstX0 = %d, GLint dstY0 = %d, GLint dstX1 = %d, GLint dstY1 = %d, "
+ "GLbitfield mask = 0x%X, GLenum filter = 0x%X)",
+ srcX0, srcY0, srcX1, srcX1, dstX0, dstY0, dstX1, dstY1, mask, filter);
Context *context = GetValidGlobalContext();
if (context)
@@ -725,9 +733,12 @@ void GL_APIENTRY BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLi
}
}
-void GL_APIENTRY DiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
+void GL_APIENTRY DiscardFramebufferEXT(GLenum target,
+ GLsizei numAttachments,
+ const GLenum *attachments)
{
- EVENT("(GLenum target = 0x%X, GLsizei numAttachments = %d, attachments = 0x%0.8p)", target, numAttachments, attachments);
+ EVENT("(GLenum target = 0x%X, GLsizei numAttachments = %d, attachments = 0x%0.8p)", target,
+ numAttachments, attachments);
Context *context = GetValidGlobalContext();
if (context)
@@ -742,64 +753,68 @@ void GL_APIENTRY DiscardFramebufferEXT(GLenum target, GLsizei numAttachments, co
}
}
-void GL_APIENTRY TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
- GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+void GL_APIENTRY TexImage3DOES(GLenum target,
+ GLint level,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLenum format,
+ GLenum type,
+ const void *pixels)
{
- EVENT("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, "
- "GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, GLint border = %d, "
- "GLenum format = 0x%X, GLenum type = 0x%x, const GLvoid* pixels = 0x%0.8p)",
- target, level, internalformat, width, height, depth, border, format, type, pixels);
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, "
+ "GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, GLint border = %d, "
+ "GLenum format = 0x%X, GLenum type = 0x%x, const void* pixels = 0x%0.8p)",
+ target, level, internalformat, width, height, depth, border, format, type, pixels);
- UNIMPLEMENTED(); // FIXME
+ UNIMPLEMENTED(); // FIXME
}
-void GL_APIENTRY GetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)
+void GL_APIENTRY GetProgramBinaryOES(GLuint program,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLenum *binaryFormat,
+ void *binary)
{
- EVENT("(GLenum program = 0x%X, bufSize = %d, length = 0x%0.8p, binaryFormat = 0x%0.8p, binary = 0x%0.8p)",
- program, bufSize, length, binaryFormat, binary);
+ EVENT(
+ "(GLenum program = 0x%X, bufSize = %d, length = 0x%0.8p, binaryFormat = 0x%0.8p, binary = "
+ "0x%0.8p)",
+ program, bufSize, length, binaryFormat, binary);
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateGetProgramBinaryOES(context, program, bufSize, length, binaryFormat, binary))
+ if (!context->skipValidation() &&
+ !ValidateGetProgramBinaryOES(context, program, bufSize, length, binaryFormat, binary))
{
return;
}
- Program *programObject = context->getProgram(program);
- ASSERT(programObject != nullptr);
-
- Error error = programObject->saveBinary(binaryFormat, binary, bufSize, length);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->getProgramBinary(program, bufSize, length, binaryFormat, binary);
}
}
-void GL_APIENTRY ProgramBinaryOES(GLuint program, GLenum binaryFormat, const void *binary, GLint length)
+void GL_APIENTRY ProgramBinaryOES(GLuint program,
+ GLenum binaryFormat,
+ const void *binary,
+ GLint length)
{
- EVENT("(GLenum program = 0x%X, binaryFormat = 0x%x, binary = 0x%0.8p, length = %d)",
- program, binaryFormat, binary, length);
+ EVENT("(GLenum program = 0x%X, binaryFormat = 0x%x, binary = 0x%0.8p, length = %d)", program,
+ binaryFormat, binary, length);
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateProgramBinaryOES(context, program, binaryFormat, binary, length))
+ if (!context->skipValidation() &&
+ !ValidateProgramBinaryOES(context, program, binaryFormat, binary, length))
{
return;
}
- Program *programObject = context->getProgram(program);
- ASSERT(programObject != nullptr);
-
- Error error = programObject->loadBinary(binaryFormat, binary, length);
- if (error.isError())
- {
- context->recordError(error);
- return;
- }
+ context->programBinary(program, binaryFormat, binary, length);
}
}
@@ -819,35 +834,23 @@ void GL_APIENTRY DrawBuffersEXT(GLsizei n, const GLenum *bufs)
}
}
-void GL_APIENTRY GetBufferPointervOES(GLenum target, GLenum pname, void** params)
+void GL_APIENTRY GetBufferPointervOES(GLenum target, GLenum pname, void **params)
{
- EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLvoid** params = 0x%0.8p)", target, pname, params);
+ EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, void** params = 0x%0.8p)", target, pname,
+ params);
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidBufferTarget(context, target))
- {
- context->recordError(Error(GL_INVALID_ENUM));
- return;
- }
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
- if (pname != GL_BUFFER_MAP_POINTER)
+ if (!context->skipValidation() &&
+ !ValidateGetBufferPointervOES(context, targetPacked, pname, params))
{
- context->recordError(Error(GL_INVALID_ENUM));
return;
}
- Buffer *buffer = context->getState().getTargetBuffer(target);
-
- if (!buffer || !buffer->isMapped())
- {
- *params = NULL;
- }
- else
- {
- *params = buffer->getMapPointer();
- }
+ context->getBufferPointerv(targetPacked, pname, params);
}
}
@@ -858,43 +861,17 @@ void *GL_APIENTRY MapBufferOES(GLenum target, GLenum access)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidBufferTarget(context, target))
- {
- context->recordError(Error(GL_INVALID_ENUM));
- return NULL;
- }
-
- Buffer *buffer = context->getState().getTargetBuffer(target);
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
- if (buffer == NULL)
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return NULL;
- }
-
- if (access != GL_WRITE_ONLY_OES)
- {
- context->recordError(Error(GL_INVALID_ENUM));
- return NULL;
- }
-
- if (buffer->isMapped())
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return NULL;
- }
-
- Error error = buffer->map(access);
- if (error.isError())
+ if (!context->skipValidation() && !ValidateMapBufferOES(context, targetPacked, access))
{
- context->recordError(error);
- return NULL;
+ return nullptr;
}
- return buffer->getMapPointer();
+ return context->mapBuffer(targetPacked, access);
}
- return NULL;
+ return nullptr;
}
GLboolean GL_APIENTRY UnmapBufferOES(GLenum target)
@@ -904,174 +881,63 @@ GLboolean GL_APIENTRY UnmapBufferOES(GLenum target)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidBufferTarget(context, target))
- {
- context->recordError(Error(GL_INVALID_ENUM));
- return GL_FALSE;
- }
-
- Buffer *buffer = context->getState().getTargetBuffer(target);
-
- if (buffer == NULL || !buffer->isMapped())
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return GL_FALSE;
- }
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
- GLboolean result;
- Error error = buffer->unmap(&result);
- if (error.isError())
+ if (!context->skipValidation() && !ValidateUnmapBufferOES(context, targetPacked))
{
- context->recordError(error);
return GL_FALSE;
}
- return result;
+ return context->unmapBuffer(targetPacked);
}
return GL_FALSE;
}
-void *GL_APIENTRY MapBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
+void *GL_APIENTRY MapBufferRangeEXT(GLenum target,
+ GLintptr offset,
+ GLsizeiptr length,
+ GLbitfield access)
{
- EVENT("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr length = %d, GLbitfield access = 0x%X)",
- target, offset, length, access);
+ EVENT(
+ "(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr length = %d, GLbitfield access = "
+ "0x%X)",
+ target, offset, length, access);
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidBufferTarget(context, target))
- {
- context->recordError(Error(GL_INVALID_ENUM));
- return NULL;
- }
-
- if (offset < 0 || length < 0)
- {
- context->recordError(Error(GL_INVALID_VALUE));
- return NULL;
- }
-
- Buffer *buffer = context->getState().getTargetBuffer(target);
-
- if (buffer == NULL)
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return NULL;
- }
-
- // Check for buffer overflow
- size_t offsetSize = static_cast<size_t>(offset);
- size_t lengthSize = static_cast<size_t>(length);
-
- if (!rx::IsUnsignedAdditionSafe(offsetSize, lengthSize) ||
- offsetSize + lengthSize > static_cast<size_t>(buffer->getSize()))
- {
- context->recordError(Error(GL_INVALID_VALUE));
- return NULL;
- }
-
- // Check for invalid bits in the mask
- GLbitfield allAccessBits = GL_MAP_READ_BIT |
- GL_MAP_WRITE_BIT |
- GL_MAP_INVALIDATE_RANGE_BIT |
- GL_MAP_INVALIDATE_BUFFER_BIT |
- GL_MAP_FLUSH_EXPLICIT_BIT |
- GL_MAP_UNSYNCHRONIZED_BIT;
-
- if (access & ~(allAccessBits))
- {
- context->recordError(Error(GL_INVALID_VALUE));
- return NULL;
- }
-
- if (length == 0 || buffer->isMapped())
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return NULL;
- }
-
- // Check for invalid bit combinations
- if ((access & (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT)) == 0)
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return NULL;
- }
-
- GLbitfield writeOnlyBits = GL_MAP_INVALIDATE_RANGE_BIT |
- GL_MAP_INVALIDATE_BUFFER_BIT |
- GL_MAP_UNSYNCHRONIZED_BIT;
-
- if ((access & GL_MAP_READ_BIT) != 0 && (access & writeOnlyBits) != 0)
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return NULL;
- }
-
- if ((access & GL_MAP_WRITE_BIT) == 0 && (access & GL_MAP_FLUSH_EXPLICIT_BIT) != 0)
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return NULL;
- }
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
- Error error = buffer->mapRange(offset, length, access);
- if (error.isError())
+ if (!context->skipValidation() &&
+ !ValidateMapBufferRangeEXT(context, targetPacked, offset, length, access))
{
- context->recordError(error);
- return NULL;
+ return nullptr;
}
- return buffer->getMapPointer();
+ return context->mapBufferRange(targetPacked, offset, length, access);
}
- return NULL;
+ return nullptr;
}
void GL_APIENTRY FlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length)
{
- EVENT("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr length = %d)", target, offset, length);
+ EVENT("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr length = %d)", target, offset,
+ length);
Context *context = GetValidGlobalContext();
if (context)
{
- if (offset < 0 || length < 0)
- {
- context->recordError(Error(GL_INVALID_VALUE));
- return;
- }
-
- if (!ValidBufferTarget(context, target))
- {
- context->recordError(Error(GL_INVALID_ENUM));
- return;
- }
-
- Buffer *buffer = context->getState().getTargetBuffer(target);
-
- if (buffer == NULL)
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return;
- }
-
- if (!buffer->isMapped() || (buffer->getAccessFlags() & GL_MAP_FLUSH_EXPLICIT_BIT) == 0)
- {
- context->recordError(Error(GL_INVALID_OPERATION));
- return;
- }
-
- // Check for buffer overflow
- size_t offsetSize = static_cast<size_t>(offset);
- size_t lengthSize = static_cast<size_t>(length);
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
- if (!rx::IsUnsignedAdditionSafe(offsetSize, lengthSize) ||
- offsetSize + lengthSize > static_cast<size_t>(buffer->getMapLength()))
+ if (!context->skipValidation() &&
+ !ValidateFlushMappedBufferRangeEXT(context, targetPacked, offset, length))
{
- context->recordError(Error(GL_INVALID_VALUE));
return;
}
- // We do not currently support a non-trivial implementation of FlushMappedBufferRange
+ context->flushMappedBufferRange(targetPacked, offset, length);
}
}
@@ -1087,7 +953,7 @@ void GL_APIENTRY InsertEventMarkerEXT(GLsizei length, const char *marker)
{
// The debug marker calls should not set error state
// However, it seems reasonable to set an error state if the extension is not enabled
- context->recordError(Error(GL_INVALID_OPERATION, "Extension not enabled"));
+ context->handleError(InvalidOperation() << "Extension not enabled");
return;
}
@@ -1112,7 +978,7 @@ void GL_APIENTRY PushGroupMarkerEXT(GLsizei length, const char *marker)
{
// The debug marker calls should not set error state
// However, it seems reasonable to set an error state if the extension is not enabled
- context->recordError(Error(GL_INVALID_OPERATION, "Extension not enabled"));
+ context->handleError(InvalidOperation() << "Extension not enabled");
return;
}
@@ -1146,7 +1012,7 @@ void GL_APIENTRY PopGroupMarkerEXT()
{
// The debug marker calls should not set error state
// However, it seems reasonable to set an error state if the extension is not enabled
- context->recordError(Error(GL_INVALID_OPERATION, "Extension not enabled"));
+ context->handleError(InvalidOperation() << "Extension not enabled");
return;
}
@@ -1161,18 +1027,17 @@ ANGLE_EXPORT void GL_APIENTRY EGLImageTargetTexture2DOES(GLenum target, GLeglIma
Context *context = GetValidGlobalContext();
if (context)
{
- egl::Display *display = egl::GetGlobalDisplay();
egl::Image *imageObject = reinterpret_cast<egl::Image *>(image);
- if (!ValidateEGLImageTargetTexture2DOES(context, display, target, imageObject))
+ if (!ValidateEGLImageTargetTexture2DOES(context, target, imageObject))
{
return;
}
Texture *texture = context->getTargetTexture(target);
- Error error = texture->setEGLImageTarget(target, imageObject);
+ Error error = texture->setEGLImageTarget(context, target, imageObject);
if (error.isError())
{
- context->recordError(error);
+ context->handleError(error);
return;
}
}
@@ -1186,18 +1051,17 @@ ANGLE_EXPORT void GL_APIENTRY EGLImageTargetRenderbufferStorageOES(GLenum target
Context *context = GetValidGlobalContext();
if (context)
{
- egl::Display *display = egl::GetGlobalDisplay();
egl::Image *imageObject = reinterpret_cast<egl::Image *>(image);
- if (!ValidateEGLImageTargetRenderbufferStorageOES(context, display, target, imageObject))
+ if (!ValidateEGLImageTargetRenderbufferStorageOES(context, target, imageObject))
{
return;
}
- Renderbuffer *renderbuffer = context->getState().getCurrentRenderbuffer();
- Error error = renderbuffer->setStorageEGLImageTarget(imageObject);
+ Renderbuffer *renderbuffer = context->getGLState().getCurrentRenderbuffer();
+ Error error = renderbuffer->setStorageEGLImageTarget(context, imageObject);
if (error.isError())
{
- context->recordError(error);
+ context->handleError(error);
return;
}
}
@@ -1210,7 +1074,7 @@ void GL_APIENTRY BindVertexArrayOES(GLuint array)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateBindVertexArrayOES(context, array))
+ if (!context->skipValidation() && !ValidateBindVertexArrayOES(context, array))
{
return;
}
@@ -1226,18 +1090,12 @@ void GL_APIENTRY DeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateDeleteVertexArraysOES(context, n))
+ if (!context->skipValidation() && !ValidateDeleteVertexArraysOES(context, n, arrays))
{
return;
}
- for (int arrayIndex = 0; arrayIndex < n; arrayIndex++)
- {
- if (arrays[arrayIndex] != 0)
- {
- context->deleteVertexArray(arrays[arrayIndex]);
- }
- }
+ context->deleteVertexArrays(n, arrays);
}
}
@@ -1248,15 +1106,12 @@ void GL_APIENTRY GenVertexArraysOES(GLsizei n, GLuint *arrays)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateGenVertexArraysOES(context, n))
+ if (!context->skipValidation() && !ValidateGenVertexArraysOES(context, n, arrays))
{
return;
}
- for (int arrayIndex = 0; arrayIndex < n; arrayIndex++)
- {
- arrays[arrayIndex] = context->createVertexArray();
- }
+ context->genVertexArrays(n, arrays);
}
}
@@ -1267,19 +1122,12 @@ GLboolean GL_APIENTRY IsVertexArrayOES(GLuint array)
Context *context = GetValidGlobalContext();
if (context)
{
- if (!ValidateIsVertexArrayOES(context))
- {
- return GL_FALSE;
- }
-
- if (array == 0)
+ if (!context->skipValidation() && !ValidateIsVertexArrayOES(context, array))
{
return GL_FALSE;
}
- VertexArray *vao = context->getVertexArray(array);
-
- return (vao != nullptr ? GL_TRUE : GL_FALSE);
+ return context->isVertexArray(array);
}
return GL_FALSE;
@@ -1305,9 +1153,7 @@ void GL_APIENTRY DebugMessageControlKHR(GLenum source,
return;
}
- std::vector<GLuint> idVector(ids, ids + count);
- context->getState().getDebug().setMessageControl(
- source, type, severity, std::move(idVector), (enabled != GL_FALSE));
+ context->debugMessageControl(source, type, severity, count, ids, enabled);
}
}
@@ -1331,8 +1177,7 @@ void GL_APIENTRY DebugMessageInsertKHR(GLenum source,
return;
}
- std::string msg(buf, (length > 0) ? static_cast<size_t>(length) : strlen(buf));
- context->getState().getDebug().insertMessage(source, type, id, severity, std::move(msg));
+ context->debugMessageInsert(source, type, id, severity, length, buf);
}
}
@@ -1349,7 +1194,7 @@ void GL_APIENTRY DebugMessageCallbackKHR(GLDEBUGPROCKHR callback, const void *us
return;
}
- context->getState().getDebug().setCallback(callback, userParam);
+ context->debugMessageCallback(callback, userParam);
}
}
@@ -1377,8 +1222,8 @@ GLuint GL_APIENTRY GetDebugMessageLogKHR(GLuint count,
return 0;
}
- return static_cast<GLuint>(context->getState().getDebug().getMessages(
- count, bufSize, sources, types, ids, severities, lengths, messageLog));
+ return context->getDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths,
+ messageLog);
}
return 0;
@@ -1400,7 +1245,7 @@ void GL_APIENTRY PushDebugGroupKHR(GLenum source, GLuint id, GLsizei length, con
}
std::string msg(message, (length > 0) ? static_cast<size_t>(length) : strlen(message));
- context->getState().getDebug().pushGroup(source, id, std::move(msg));
+ context->pushDebugGroup(source, id, length, message);
}
}
@@ -1416,7 +1261,7 @@ void GL_APIENTRY PopDebugGroupKHR(void)
return;
}
- context->getState().getDebug().popGroup();
+ context->popDebugGroup();
}
}
@@ -1435,11 +1280,7 @@ void GL_APIENTRY ObjectLabelKHR(GLenum identifier, GLuint name, GLsizei length,
return;
}
- LabeledObject *object = context->getLabeledObject(identifier, name);
- ASSERT(object != nullptr);
-
- std::string lbl(label, (length > 0) ? static_cast<size_t>(length) : strlen(label));
- object->setLabel(lbl);
+ context->objectLabel(identifier, name, length, label);
}
}
@@ -1459,14 +1300,7 @@ GetObjectLabelKHR(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *leng
return;
}
- LabeledObject *object = context->getLabeledObject(identifier, name);
- ASSERT(object != nullptr);
-
- const std::string &objectLabel = object->getLabel();
- size_t writeLength = std::min(static_cast<size_t>(bufSize) - 1, objectLabel.length());
- std::copy(objectLabel.begin(), objectLabel.begin() + writeLength, label);
- label[writeLength] = '\0';
- *length = static_cast<GLsizei>(writeLength);
+ context->getObjectLabel(identifier, name, bufSize, length, label);
}
}
@@ -1483,11 +1317,7 @@ void GL_APIENTRY ObjectPtrLabelKHR(const void *ptr, GLsizei length, const GLchar
return;
}
- LabeledObject *object = context->getLabeledObjectFromPtr(ptr);
- ASSERT(object != nullptr);
-
- std::string lbl(label, (length > 0) ? static_cast<size_t>(length) : strlen(label));
- object->setLabel(lbl);
+ context->objectPtrLabel(ptr, length, label);
}
}
@@ -1509,14 +1339,7 @@ void GL_APIENTRY GetObjectPtrLabelKHR(const void *ptr,
return;
}
- LabeledObject *object = context->getLabeledObjectFromPtr(ptr);
- ASSERT(object != nullptr);
-
- const std::string &objectLabel = object->getLabel();
- size_t writeLength = std::min(static_cast<size_t>(bufSize) - 1, objectLabel.length());
- std::copy(objectLabel.begin(), objectLabel.begin() + writeLength, label);
- label[writeLength] = '\0';
- *length = static_cast<GLsizei>(writeLength);
+ context->getObjectPtrLabel(ptr, bufSize, length, label);
}
}
@@ -1535,4 +1358,2201 @@ void GL_APIENTRY GetPointervKHR(GLenum pname, void **params)
context->getPointerv(pname, params);
}
}
+
+ANGLE_EXPORT void GL_APIENTRY BindUniformLocationCHROMIUM(GLuint program,
+ GLint location,
+ const GLchar *name)
+{
+ EVENT("(GLuint program = %u, GLint location = %d, const GLchar *name = 0x%0.8p)", program,
+ location, name);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateBindUniformLocationCHROMIUM(context, program, location, name))
+ {
+ return;
+ }
+
+ context->bindUniformLocation(program, location, name);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CoverageModulationCHROMIUM(GLenum components)
+{
+ EVENT("(GLenum components = %u)", components);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateCoverageModulationCHROMIUM(context, components))
+ {
+ return;
+ }
+ context->setCoverageModulation(components);
+ }
+}
+
+// CHROMIUM_path_rendering
+ANGLE_EXPORT void GL_APIENTRY MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat *matrix)
+{
+ EVENT("(GLenum matrixMode = %u)", matrixMode);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateMatrix(context, matrixMode, matrix))
+ {
+ return;
+ }
+ context->loadPathRenderingMatrix(matrixMode, matrix);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY MatrixLoadIdentityCHROMIUM(GLenum matrixMode)
+{
+ EVENT("(GLenum matrixMode = %u)", matrixMode);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateMatrixMode(context, matrixMode))
+ {
+ return;
+ }
+ context->loadPathRenderingIdentityMatrix(matrixMode);
+ }
+}
+
+ANGLE_EXPORT GLuint GL_APIENTRY GenPathsCHROMIUM(GLsizei range)
+{
+ EVENT("(GLsizei range = %d)", range);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateGenPaths(context, range))
+ {
+ return 0;
+ }
+ return context->createPaths(range);
+ }
+ return 0;
+}
+
+ANGLE_EXPORT void GL_APIENTRY DeletePathsCHROMIUM(GLuint first, GLsizei range)
+{
+ EVENT("(GLuint first = %u, GLsizei range = %d)", first, range);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateDeletePaths(context, first, range))
+ {
+ return;
+ }
+ context->deletePaths(first, range);
+ }
+}
+
+ANGLE_EXPORT GLboolean GL_APIENTRY IsPathCHROMIUM(GLuint path)
+{
+ EVENT("(GLuint path = %u)", path);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateIsPath(context))
+ {
+ return GL_FALSE;
+ }
+ return context->hasPathData(path);
+ }
+ return GL_FALSE;
+}
+
+ANGLE_EXPORT void GL_APIENTRY PathCommandsCHROMIUM(GLuint path,
+ GLsizei numCommands,
+ const GLubyte *commands,
+ GLsizei numCoords,
+ GLenum coordType,
+ const void *coords)
+{
+ EVENT(
+ "(GLuint path = %u, GLsizei numCommands = %d, commands = %p, "
+ "GLsizei numCoords = %d, GLenum coordType = %u, void* coords = %p)",
+ path, numCommands, commands, numCoords, coordType, coords);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation())
+ {
+ if (!ValidatePathCommands(context, path, numCommands, commands, numCoords, coordType,
+ coords))
+ {
+ return;
+ }
+ }
+ context->setPathCommands(path, numCommands, commands, numCoords, coordType, coords);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY PathParameterfCHROMIUM(GLuint path, GLenum pname, GLfloat value)
+{
+ EVENT("(GLuint path = %u, GLenum pname = %u, GLfloat value = %f)", path, pname, value);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateSetPathParameter(context, path, pname, value))
+ {
+ return;
+ }
+ context->setPathParameterf(path, pname, value);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY PathParameteriCHROMIUM(GLuint path, GLenum pname, GLint value)
+{
+ PathParameterfCHROMIUM(path, pname, static_cast<GLfloat>(value));
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetPathParameterfCHROMIUM(GLuint path, GLenum pname, GLfloat *value)
+{
+ EVENT("(GLuint path = %u, GLenum pname = %u)", path, pname);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateGetPathParameter(context, path, pname, value))
+ {
+ return;
+ }
+ context->getPathParameterfv(path, pname, value);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetPathParameteriCHROMIUM(GLuint path, GLenum pname, GLint *value)
+{
+ GLfloat val = 0.0f;
+ GetPathParameterfCHROMIUM(path, pname, value != nullptr ? &val : nullptr);
+ if (value)
+ *value = static_cast<GLint>(val);
+}
+
+ANGLE_EXPORT void GL_APIENTRY PathStencilFuncCHROMIUM(GLenum func, GLint ref, GLuint mask)
+{
+ EVENT("(GLenum func = %u, GLint ref = %d, GLuint mask = %u)", func, ref, mask);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidatePathStencilFunc(context, func, ref, mask))
+ {
+ return;
+ }
+ context->setPathStencilFunc(func, ref, mask);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY StencilFillPathCHROMIUM(GLuint path, GLenum fillMode, GLuint mask)
+{
+ EVENT("(GLuint path = %u, GLenum fillMode = %u, GLuint mask = %u)", path, fillMode, mask);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateStencilFillPath(context, path, fillMode, mask))
+ {
+ return;
+ }
+ context->stencilFillPath(path, fillMode, mask);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY StencilStrokePathCHROMIUM(GLuint path, GLint reference, GLuint mask)
+{
+ EVENT("(GLuint path = %u, GLint ference = %d, GLuint mask = %u)", path, reference, mask);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateStencilStrokePath(context, path, reference, mask))
+ {
+ return;
+ }
+ context->stencilStrokePath(path, reference, mask);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CoverFillPathCHROMIUM(GLuint path, GLenum coverMode)
+{
+ EVENT("(GLuint path = %u, GLenum coverMode = %u)", path, coverMode);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateCoverPath(context, path, coverMode))
+ {
+ return;
+ }
+ context->coverFillPath(path, coverMode);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CoverStrokePathCHROMIUM(GLuint path, GLenum coverMode)
+{
+ EVENT("(GLuint path = %u, GLenum coverMode = %u)", path, coverMode);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateCoverPath(context, path, coverMode))
+ {
+ return;
+ }
+ context->coverStrokePath(path, coverMode);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY StencilThenCoverFillPathCHROMIUM(GLuint path,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum coverMode)
+{
+ EVENT("(GLuint path = %u, GLenum fillMode = %u, GLuint mask = %u, GLenum coverMode = %u)", path,
+ fillMode, mask, coverMode);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateStencilThenCoverFillPath(context, path, fillMode, mask, coverMode))
+ {
+ return;
+ }
+ context->stencilThenCoverFillPath(path, fillMode, mask, coverMode);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY StencilThenCoverStrokePathCHROMIUM(GLuint path,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode)
+{
+ EVENT("(GLuint path = %u, GLint reference = %d, GLuint mask = %u, GLenum coverMode = %u)", path,
+ reference, mask, coverMode);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateStencilThenCoverStrokePath(context, path, reference, mask, coverMode))
+ {
+ return;
+ }
+ context->stencilThenCoverStrokePath(path, reference, mask, coverMode);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CoverFillPathInstancedCHROMIUM(GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues)
+{
+ EVENT(
+ "(GLsizei numPaths = %d, GLenum pathNameType = %u, const void *paths = %p "
+ "GLuint pathBase = %u, GLenum coverMode = %u, GLenum transformType = %u "
+ "const GLfloat *transformValues = %p)",
+ numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateCoverFillPathInstanced(context, numPaths, pathNameType, paths, pathBase,
+ coverMode, transformType, transformValues))
+ {
+ return;
+ }
+ context->coverFillPathInstanced(numPaths, pathNameType, paths, pathBase, coverMode,
+ transformType, transformValues);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CoverStrokePathInstancedCHROMIUM(GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues)
+{
+ EVENT(
+ "(GLsizei numPaths = %d, GLenum pathNameType = %u, const void *paths = %p "
+ "GLuint pathBase = %u, GLenum coverMode = %u, GLenum transformType = %u "
+ "const GLfloat *transformValues = %p)",
+ numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateCoverStrokePathInstanced(context, numPaths, pathNameType, paths, pathBase,
+ coverMode, transformType, transformValues))
+ {
+ return;
+ }
+ context->coverStrokePathInstanced(numPaths, pathNameType, paths, pathBase, coverMode,
+ transformType, transformValues);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY StencilStrokePathInstancedCHROMIUM(GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLint reference,
+ GLuint mask,
+ GLenum transformType,
+ const GLfloat *transformValues)
+{
+ EVENT(
+ "(GLsizei numPaths = %u, GLenum pathNameType = %u, const void *paths = %p "
+ "GLuint pathBase = %u, GLint reference = %d GLuint mask = %u GLenum transformType = %u "
+ "const GLfloat *transformValues = %p)",
+ numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateStencilStrokePathInstanced(context, numPaths, pathNameType, paths, pathBase,
+ reference, mask, transformType, transformValues))
+ {
+ return;
+ }
+ context->stencilStrokePathInstanced(numPaths, pathNameType, paths, pathBase, reference,
+ mask, transformType, transformValues);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY StencilFillPathInstancedCHROMIUM(GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum transformType,
+ const GLfloat *transformValues)
+{
+ EVENT(
+ "(GLsizei numPaths = %u, GLenum pathNameType = %u const void *paths = %p "
+ "GLuint pathBase = %u, GLenum fillMode = %u, GLuint mask = %u, GLenum transformType = %u "
+ "const GLfloat *transformValues = %p)",
+ numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateStencilFillPathInstanced(context, numPaths, pathNameType, paths, pathBase,
+ fillMode, mask, transformType, transformValues))
+ {
+ return;
+ }
+ context->stencilFillPathInstanced(numPaths, pathNameType, paths, pathBase, fillMode, mask,
+ transformType, transformValues);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY
+StencilThenCoverFillPathInstancedCHROMIUM(GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues)
+{
+ EVENT(
+ "(GLsizei numPaths = %u, GLenum pathNameType = %u const void *paths = %p "
+ "GLuint pathBase = %u, GLenum coverMode = %u, GLuint mask = %u, GLenum transformType = %u "
+ "const GLfloat *transformValues = %p)",
+ numPaths, pathNameType, paths, pathBase, coverMode, mask, transformType, transformValues);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateStencilThenCoverFillPathInstanced(context, numPaths, pathNameType, paths,
+ pathBase, fillMode, mask, coverMode,
+ transformType, transformValues))
+ {
+ return;
+ }
+ context->stencilThenCoverFillPathInstanced(numPaths, pathNameType, paths, pathBase,
+ fillMode, mask, coverMode, transformType,
+ transformValues);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY
+StencilThenCoverStrokePathInstancedCHROMIUM(GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues)
+{
+ EVENT(
+ "(GLsizei numPaths = %u, GLenum pathNameType = %u, const void *paths = %p "
+ "GLuint pathBase = %u GLenum coverMode = %u GLint reference = %d GLuint mask = %u GLenum "
+ "transformType = %u "
+ "const GLfloat *transformValues = %p)",
+ numPaths, pathNameType, paths, pathBase, coverMode, reference, mask, transformType,
+ transformValues);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateStencilThenCoverStrokePathInstanced(context, numPaths, pathNameType, paths,
+ pathBase, reference, mask, coverMode,
+ transformType, transformValues))
+ {
+ return;
+ }
+ context->stencilThenCoverStrokePathInstanced(numPaths, pathNameType, paths, pathBase,
+ reference, mask, coverMode, transformType,
+ transformValues);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY BindFragmentInputLocationCHROMIUM(GLuint program,
+ GLint location,
+ const GLchar *name)
+{
+ EVENT("(GLuint program = %u, GLint location = %d, const GLchar *name = %p)", program, location,
+ name);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateBindFragmentInputLocation(context, program, location, name))
+ {
+ return;
+ }
+ context->bindFragmentInputLocation(program, location, name);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY ProgramPathFragmentInputGenCHROMIUM(GLuint program,
+ GLint location,
+ GLenum genMode,
+ GLint components,
+ const GLfloat *coeffs)
+{
+ EVENT(
+ "(GLuint program = %u, GLint location %d, GLenum genMode = %u, GLint components = %d, "
+ "const GLfloat * coeffs = %p)",
+ program, location, genMode, components, coeffs);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateProgramPathFragmentInputGen(context, program, location, genMode, components,
+ coeffs))
+ {
+ return;
+ }
+ context->programPathFragmentInputGen(program, location, genMode, components, coeffs);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CopyTextureCHROMIUM(GLuint sourceId,
+ GLint sourceLevel,
+ GLenum destTarget,
+ GLuint destId,
+ GLint destLevel,
+ GLint internalFormat,
+ GLenum destType,
+ GLboolean unpackFlipY,
+ GLboolean unpackPremultiplyAlpha,
+ GLboolean unpackUnmultiplyAlpha)
+{
+ EVENT(
+ "(GLuint sourceId = %u, GLint sourceLevel = %d, GLenum destTarget = 0x%X, GLuint destId = "
+ "%u, GLint destLevel = %d, GLint internalFormat = 0x%X, GLenum destType = "
+ "0x%X, GLboolean unpackFlipY = %u, GLboolean unpackPremultiplyAlpha = %u, GLboolean "
+ "unpackUnmultiplyAlpha = %u)",
+ sourceId, sourceLevel, destTarget, destId, destLevel, internalFormat, destType, unpackFlipY,
+ unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateCopyTextureCHROMIUM(context, sourceId, sourceLevel, destTarget, destId,
+ destLevel, internalFormat, destType, unpackFlipY,
+ unpackPremultiplyAlpha, unpackUnmultiplyAlpha))
+ {
+ return;
+ }
+
+ context->copyTextureCHROMIUM(sourceId, sourceLevel, destTarget, destId, destLevel,
+ internalFormat, destType, unpackFlipY, unpackPremultiplyAlpha,
+ unpackUnmultiplyAlpha);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CopySubTextureCHROMIUM(GLuint sourceId,
+ GLint sourceLevel,
+ GLenum destTarget,
+ GLuint destId,
+ GLint destLevel,
+ GLint xoffset,
+ GLint yoffset,
+ GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLboolean unpackFlipY,
+ GLboolean unpackPremultiplyAlpha,
+ GLboolean unpackUnmultiplyAlpha)
+{
+ EVENT(
+ "(GLuint sourceId = %u, GLint sourceLevel = %d, GLenum destTarget = 0x%X, GLuint destId = "
+ "%u, GLint destLevel = %d, GLint xoffset = "
+ "%d, GLint yoffset = %d, GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = "
+ "%d, GLboolean unpackPremultiplyAlpha = %u, GLboolean unpackUnmultiplyAlpha = %u)",
+ sourceId, sourceLevel, destTarget, destId, destLevel, xoffset, yoffset, x, y, width, height,
+ unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateCopySubTextureCHROMIUM(
+ context, sourceId, sourceLevel, destTarget, destId, destLevel, xoffset, yoffset, x,
+ y, width, height, unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha))
+ {
+ return;
+ }
+
+ context->copySubTextureCHROMIUM(sourceId, sourceLevel, destTarget, destId, destLevel,
+ xoffset, yoffset, x, y, width, height, unpackFlipY,
+ unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY CompressedCopyTextureCHROMIUM(GLuint sourceId, GLuint destId)
+{
+ EVENT("(GLuint sourceId = %u, GLuint destId = %u)", sourceId, destId);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateCompressedCopyTextureCHROMIUM(context, sourceId, destId))
+ {
+ return;
+ }
+
+ context->compressedCopyTextureCHROMIUM(sourceId, destId);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY RequestExtensionANGLE(const GLchar *name)
+{
+ EVENT("(const GLchar *name = %p)", name);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateRequestExtensionANGLE(context, name))
+ {
+ return;
+ }
+
+ context->requestExtension(name);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetBooleanvRobustANGLE(GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLboolean *params)
+{
+ EVENT(
+ "(GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLboolean* params "
+ "= 0x%0.8p)",
+ pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLenum nativeType;
+ unsigned int numParams = 0;
+ if (!ValidateRobustStateQuery(context, pname, bufSize, &nativeType, &numParams))
+ {
+ return;
+ }
+
+ context->getBooleanv(pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetBufferParameterivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = 0x%0.8p)", target, pname,
+ params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
+
+ GLsizei numParams = 0;
+ if (!ValidateGetBufferParameterivRobustANGLE(context, targetPacked, pname, bufSize,
+ &numParams, params))
+ {
+ return;
+ }
+
+ Buffer *buffer = context->getGLState().getTargetBuffer(targetPacked);
+ QueryBufferParameteriv(buffer, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetFloatvRobustANGLE(GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *params)
+{
+ EVENT(
+ "(GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLfloat* params = "
+ "0x%0.8p)",
+ pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLenum nativeType;
+ unsigned int numParams = 0;
+ if (!ValidateRobustStateQuery(context, pname, bufSize, &nativeType, &numParams))
+ {
+ return;
+ }
+
+ context->getFloatv(pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetFramebufferAttachmentParameterivRobustANGLE(GLenum target,
+ GLenum attachment,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = "
+ "%d, GLsizei* length = 0x%0.8p, GLint* params = 0x%0.8p)",
+ target, attachment, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetFramebufferAttachmentParameterivRobustANGLE(context, target, attachment,
+ pname, bufSize, &numParams))
+ {
+ return;
+ }
+
+ const Framebuffer *framebuffer = context->getGLState().getTargetFramebuffer(target);
+ QueryFramebufferAttachmentParameteriv(framebuffer, attachment, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetIntegervRobustANGLE(GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *data)
+{
+ EVENT(
+ "(GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLint* params = "
+ "0x%0.8p)",
+ pname, bufSize, length, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLenum nativeType;
+ unsigned int numParams = 0;
+ if (!ValidateRobustStateQuery(context, pname, bufSize, &nativeType, &numParams))
+ {
+ return;
+ }
+
+ context->getIntegerv(pname, data);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetProgramivRobustANGLE(GLuint program,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint program = %d, GLenum pname = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLint* params = 0x%0.8p)",
+ program, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetProgramivRobustANGLE(context, program, pname, bufSize, &numParams))
+ {
+ return;
+ }
+
+ Program *programObject = context->getProgram(program);
+ QueryProgramiv(context, programObject, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetRenderbufferParameterivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint* params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetRenderbufferParameterivRobustANGLE(context, target, pname, bufSize,
+ &numParams, params))
+ {
+ return;
+ }
+
+ Renderbuffer *renderbuffer = context->getGLState().getCurrentRenderbuffer();
+ QueryRenderbufferiv(context, renderbuffer, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY
+GetShaderivRobustANGLE(GLuint shader, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *params)
+{
+ EVENT(
+ "(GLuint shader = %d, GLenum pname = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLint* params = 0x%0.8p)",
+ shader, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetShaderivRobustANGLE(context, shader, pname, bufSize, &numParams, params))
+ {
+ return;
+ }
+
+ Shader *shaderObject = context->getShader(shader);
+ QueryShaderiv(context, shaderObject, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetTexParameterfvRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLfloat* params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetTexParameterfvRobustANGLE(context, target, pname, bufSize, &numParams,
+ params))
+ {
+ return;
+ }
+
+ Texture *texture = context->getTargetTexture(target);
+ QueryTexParameterfv(texture, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetTexParameterivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLfloat* params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetTexParameterivRobustANGLE(context, target, pname, bufSize, &numParams,
+ params))
+ {
+ return;
+ }
+
+ Texture *texture = context->getTargetTexture(target);
+ QueryTexParameteriv(texture, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetUniformfvRobustANGLE(GLuint program,
+ GLint location,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *params)
+{
+ EVENT(
+ "(GLuint program = %d, GLint location = %d, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLfloat* params = 0x%0.8p)",
+ program, location, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetUniformfvRobustANGLE(context, program, location, bufSize, &writeLength,
+ params))
+ {
+ return;
+ }
+
+ Program *programObject = context->getProgram(program);
+ ASSERT(programObject);
+
+ programObject->getUniformfv(context, location, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetUniformivRobustANGLE(GLuint program,
+ GLint location,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint program = %d, GLint location = %d, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint* params = 0x%0.8p)",
+ program, location, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetUniformivRobustANGLE(context, program, location, bufSize, &writeLength,
+ params))
+ {
+ return;
+ }
+
+ Program *programObject = context->getProgram(program);
+ ASSERT(programObject);
+
+ programObject->getUniformiv(context, location, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetVertexAttribfvRobustANGLE(GLuint index,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *params)
+{
+ EVENT(
+ "(GLuint index = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLfloat* params = 0x%0.8p)",
+ index, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetVertexAttribfvRobustANGLE(context, index, pname, bufSize, &writeLength,
+ params))
+ {
+ return;
+ }
+
+ context->getVertexAttribfv(index, pname, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetVertexAttribivRobustANGLE(GLuint index,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint index = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLint* params = 0x%0.8p)",
+ index, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetVertexAttribivRobustANGLE(context, index, pname, bufSize, &writeLength,
+ params))
+ {
+ return;
+ }
+
+ context->getVertexAttribiv(index, pname, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetVertexAttribPointervRobustANGLE(GLuint index,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ void **pointer)
+{
+ EVENT(
+ "(GLuint index = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "void** pointer = 0x%0.8p)",
+ index, pname, bufSize, length, pointer);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetVertexAttribPointervRobustANGLE(context, index, pname, bufSize,
+ &writeLength, pointer))
+ {
+ return;
+ }
+
+ context->getVertexAttribPointerv(index, pname, pointer);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY ReadPixelsRobustANGLE(GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLsizei *columns,
+ GLsizei *rows,
+ void *pixels)
+{
+ EVENT(
+ "(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, "
+ "GLenum format = 0x%X, GLenum type = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLsizei* columns = 0x%0.8p, GLsizei* rows = 0x%0.8p, void* pixels = 0x%0.8p)",
+ x, y, width, height, format, type, bufSize, length, columns, rows, pixels);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ GLsizei writeColumns = 0;
+ GLsizei writeRows = 0;
+ if (!ValidateReadPixelsRobustANGLE(context, x, y, width, height, format, type, bufSize,
+ &writeLength, &writeColumns, &writeRows, pixels))
+ {
+ return;
+ }
+
+ context->readPixels(x, y, width, height, format, type, pixels);
+
+ SetRobustLengthParam(length, writeLength);
+ SetRobustLengthParam(columns, writeColumns);
+ SetRobustLengthParam(rows, writeRows);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexImage2DRobustANGLE(GLenum target,
+ GLint level,
+ GLint internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLint border,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ const void *pixels)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, "
+ "GLsizei height = %d, GLint border = %d, GLenum format = 0x%X, GLenum type = 0x%X, GLsizei "
+ "bufSize = %d, const void* pixels = 0x%0.8p)",
+ target, level, internalformat, width, height, border, format, type, bufSize, pixels);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateTexImage2DRobust(context, target, level, internalformat, width, height, border,
+ format, type, bufSize, pixels))
+ {
+ return;
+ }
+
+ context->texImage2D(target, level, internalformat, width, height, border, format, type,
+ pixels);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexParameterfvRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLfloat *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLfloat* params = "
+ "0x%0.8p)",
+ target, pname, bufSize, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateTexParameterfvRobustANGLE(context, target, pname, bufSize, params))
+ {
+ return;
+ }
+
+ Texture *texture = context->getTargetTexture(target);
+ SetTexParameterfv(context, texture, pname, params);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexParameterivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLfloat* params = "
+ "0x%0.8p)",
+ target, pname, bufSize, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateTexParameterivRobustANGLE(context, target, pname, bufSize, params))
+ {
+ return;
+ }
+
+ Texture *texture = context->getTargetTexture(target);
+ SetTexParameteriv(context, texture, pname, params);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexSubImage2DRobustANGLE(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ const void *pixels)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
+ "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, GLenum type = 0x%X, "
+ "GLsizei bufsize = %d, const void* pixels = 0x%0.8p)",
+ target, level, xoffset, yoffset, width, height, format, type, bufSize, pixels);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateTexSubImage2DRobustANGLE(context, target, level, xoffset, yoffset, width,
+ height, format, type, bufSize, pixels))
+ {
+ return;
+ }
+
+ context->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
+ pixels);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexImage3DRobustANGLE(GLenum target,
+ GLint level,
+ GLint internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ const void *pixels)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, "
+ "GLsizei height = %d, GLsizei depth = %d, GLint border = %d, GLenum format = 0x%X, "
+ "GLenum type = 0x%X, GLsizei bufsize = %d, const void* pixels = 0x%0.8p)",
+ target, level, internalformat, width, height, depth, border, format, type, bufSize, pixels);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateTexImage3DRobustANGLE(context, target, level, internalformat, width, height,
+ depth, border, format, type, bufSize, pixels))
+ {
+ return;
+ }
+
+ context->texImage3D(target, level, internalformat, width, height, depth, border, format,
+ type, pixels);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexSubImage3DRobustANGLE(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ const void *pixels)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
+ "GLint zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, "
+ "GLenum format = 0x%X, GLenum type = 0x%X, GLsizei bufsize = %d, const void* pixels = "
+ "0x%0.8p)",
+ target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize,
+ pixels);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateTexSubImage3DRobustANGLE(context, target, level, xoffset, yoffset, zoffset,
+ width, height, depth, format, type, bufSize, pixels))
+ {
+ return;
+ }
+
+ context->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth,
+ format, type, pixels);
+ }
+}
+
+void GL_APIENTRY CompressedTexImage2DRobustANGLE(GLenum target,
+ GLint level,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLint border,
+ GLsizei imageSize,
+ GLsizei dataSize,
+ const GLvoid *data)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = "
+ "%d, "
+ "GLsizei height = %d, GLint border = %d, GLsizei imageSize = %d, GLsizei dataSize = %d, "
+ "const GLvoid* data = 0x%0.8p)",
+ target, level, internalformat, width, height, border, imageSize, dataSize, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateCompressedTexImage2DRobustANGLE(context, target, level, internalformat, width,
+ height, border, imageSize, dataSize, data))
+ {
+ return;
+ }
+
+ context->compressedTexImage2D(target, level, internalformat, width, height, border,
+ imageSize, data);
+ }
}
+
+void GL_APIENTRY CompressedTexSubImage2DRobustANGLE(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLsizei imageSize,
+ GLsizei dataSize,
+ const GLvoid *data)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
+ "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, "
+ "GLsizei imageSize = %d, GLsizei dataSize = %d, const GLvoid* data = 0x%0.8p)",
+ target, level, xoffset, yoffset, width, height, format, imageSize, dataSize, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateCompressedTexSubImage2DRobustANGLE(
+ context, target, level, xoffset, yoffset, width,
+ height, format, imageSize, dataSize, data))
+ {
+ return;
+ }
+
+ context->compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format,
+ imageSize, data);
+ }
+}
+
+void GL_APIENTRY CompressedTexImage3DRobustANGLE(GLenum target,
+ GLint level,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLsizei imageSize,
+ GLsizei dataSize,
+ const GLvoid *data)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = "
+ "%d, "
+ "GLsizei height = %d, GLsizei depth = %d, GLint border = %d, GLsizei imageSize = %d, "
+ "GLsizei dataSize = %d, const GLvoid* data = 0x%0.8p)",
+ target, level, internalformat, width, height, depth, border, imageSize, dataSize, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() && !ValidateCompressedTexImage3DRobustANGLE(
+ context, target, level, internalformat, width, height,
+ depth, border, imageSize, dataSize, data))
+ {
+ return;
+ }
+
+ context->compressedTexImage3D(target, level, internalformat, width, height, depth, border,
+ imageSize, data);
+ }
+}
+
+void GL_APIENTRY CompressedTexSubImage3DRobustANGLE(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLenum format,
+ GLsizei imageSize,
+ GLsizei dataSize,
+ const GLvoid *data)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
+ "GLint zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, "
+ "GLenum format = 0x%X, GLsizei imageSize = %d, GLsizei dataSize = %d, const GLvoid* data = "
+ "0x%0.8p)",
+ target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, dataSize,
+ data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateCompressedTexSubImage3DRobustANGLE(context, target, level, xoffset, yoffset,
+ zoffset, width, height, depth, format,
+ imageSize, dataSize, data))
+ {
+ return;
+ }
+
+ context->compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height,
+ depth, format, imageSize, data);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY
+GetQueryivRobustANGLE(GLenum target, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint* params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetQueryivRobustANGLE(context, target, pname, bufSize, &numParams, params))
+ {
+ return;
+ }
+
+ context->getQueryiv(target, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetQueryObjectuivRobustANGLE(GLuint id,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLuint *params)
+{
+ EVENT(
+ "(GLuint id = %u, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLint* params = 0x%0.8p)",
+ id, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetQueryObjectuivRobustANGLE(context, id, pname, bufSize, &numParams, params))
+ {
+ return;
+ }
+
+ context->getQueryObjectuiv(id, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetBufferPointervRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ void **params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, void** params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
+
+ GLsizei numParams = 0;
+ if (!ValidateGetBufferPointervRobustANGLE(context, targetPacked, pname, bufSize, &numParams,
+ params))
+ {
+ return;
+ }
+
+ context->getBufferPointerv(targetPacked, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY
+GetIntegeri_vRobustANGLE(GLenum target, GLuint index, GLsizei bufSize, GLsizei *length, GLint *data)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLuint index = %u, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint* data = 0x%0.8p)",
+ target, index, bufSize, length, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetIntegeri_vRobustANGLE(context, target, index, bufSize, &numParams, data))
+ {
+ return;
+ }
+
+ context->getIntegeri_v(target, index, data);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetInternalformativRobustANGLE(GLenum target,
+ GLenum internalformat,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum internalformat = 0x%X, GLenum pname = 0x%X, GLsizei bufSize "
+ "= %d, GLsizei* length = 0x%0.8p, GLint* params = 0x%0.8p)",
+ target, internalformat, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetInternalFormativRobustANGLE(context, target, internalformat, pname, bufSize,
+ &numParams, params))
+ {
+ return;
+ }
+
+ const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
+ QueryInternalFormativ(formatCaps, pname, bufSize, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetVertexAttribIivRobustANGLE(GLuint index,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint index = %u, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLint* params = 0x%0.8p)",
+ index, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetVertexAttribIivRobustANGLE(context, index, pname, bufSize, &writeLength,
+ params))
+ {
+ return;
+ }
+
+ context->getVertexAttribIiv(index, pname, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetVertexAttribIuivRobustANGLE(GLuint index,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLuint *params)
+{
+ EVENT(
+ "(GLuint index = %u, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLuint* params = 0x%0.8p)",
+ index, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetVertexAttribIuivRobustANGLE(context, index, pname, bufSize, &writeLength,
+ params))
+ {
+ return;
+ }
+
+ context->getVertexAttribIuiv(index, pname, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetUniformuivRobustANGLE(GLuint program,
+ GLint location,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLuint *params)
+{
+ EVENT(
+ "(GLuint program = %u, GLint location = %d, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLuint* params = 0x%0.8p)",
+ program, location, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetUniformuivRobustANGLE(context, program, location, bufSize, &writeLength,
+ params))
+ {
+ return;
+ }
+
+ Program *programObject = context->getProgram(program);
+ ASSERT(programObject);
+
+ programObject->getUniformuiv(context, location, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetActiveUniformBlockivRobustANGLE(GLuint program,
+ GLuint uniformBlockIndex,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint program = %u, GLuint uniformBlockIndex = %u, GLenum pname = 0x%X, GLsizei bufsize "
+ "= %d, GLsizei* length = 0x%0.8p, GLint* params = 0x%0.8p)",
+ program, uniformBlockIndex, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ if (!ValidateGetActiveUniformBlockivRobustANGLE(context, program, uniformBlockIndex, pname,
+ bufSize, &writeLength, params))
+ {
+ return;
+ }
+
+ const Program *programObject = context->getProgram(program);
+ QueryActiveUniformBlockiv(programObject, uniformBlockIndex, pname, params);
+ SetRobustLengthParam(length, writeLength);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetInteger64vRobustANGLE(GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint64 *data)
+{
+ EVENT(
+ "(GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLint64* params = "
+ "0x%0.8p)",
+ pname, bufSize, length, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLenum nativeType;
+ unsigned int numParams = 0;
+ if (!ValidateRobustStateQuery(context, pname, bufSize, &nativeType, &numParams))
+ {
+ return;
+ }
+
+ if (nativeType == GL_INT_64_ANGLEX)
+ {
+ context->getInteger64v(pname, data);
+ }
+ else
+ {
+ CastStateValues(context, nativeType, pname, numParams, data);
+ }
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetInteger64i_vRobustANGLE(GLenum target,
+ GLuint index,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint64 *data)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLuint index = %u, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint64* data = 0x%0.8p)",
+ target, index, bufSize, length, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetInteger64i_vRobustANGLE(context, target, index, bufSize, &numParams, data))
+ {
+ return;
+ }
+
+ context->getInteger64i_v(target, index, data);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetBufferParameteri64vRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint64 *params)
+{
+ EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint64* params = 0x%0.8p)", target, pname,
+ bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ BufferBinding targetPacked = FromGLenum<BufferBinding>(target);
+
+ GLsizei numParams = 0;
+ if (!ValidateGetBufferParameteri64vRobustANGLE(context, targetPacked, pname, bufSize,
+ &numParams, params))
+ {
+ return;
+ }
+
+ Buffer *buffer = context->getGLState().getTargetBuffer(targetPacked);
+ QueryBufferParameteri64v(buffer, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY SamplerParameterivRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLint *param)
+{
+ EVENT(
+ "(GLuint sampler = %u, GLenum pname = 0x%X, GLsizei bufsize = %d, const GLint* params = "
+ "0x%0.8p)",
+ sampler, pname, bufSize, param);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateSamplerParameterivRobustANGLE(context, sampler, pname, bufSize, param))
+ {
+ return;
+ }
+
+ context->samplerParameteriv(sampler, pname, param);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY SamplerParameterfvRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLfloat *param)
+{
+ EVENT(
+ "(GLuint sampler = %u, GLenum pname = 0x%X, GLsizei bufsize = %d, const GLfloat* params = "
+ "0x%0.8p)",
+ sampler, pname, bufSize, param);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!ValidateSamplerParameterfvRobustANGLE(context, sampler, pname, bufSize, param))
+ {
+ return;
+ }
+
+ context->samplerParameterfv(sampler, pname, param);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetSamplerParameterivRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint sampler = %u, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint* params = 0x%0.8p)",
+ sampler, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetSamplerParameterivRobustANGLE(context, sampler, pname, bufSize, &numParams,
+ params))
+ {
+ return;
+ }
+
+ context->getSamplerParameteriv(sampler, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetSamplerParameterfvRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *params)
+{
+ EVENT(
+ "(GLuint sample = %ur, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLfloat* params = 0x%0.8p)",
+ sampler, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetSamplerParameterfvRobustANGLE(context, sampler, pname, bufSize, &numParams,
+ params))
+ {
+ return;
+ }
+
+ context->getSamplerParameterfv(sampler, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetFramebufferParameterivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint* params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetProgramInterfaceivRobustANGLE(GLuint program,
+ GLenum programInterface,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint program = %u, GLenum programInterface = 0x%X, GLenum pname = 0x%X, GLsizei "
+ "bufsize = %d, GLsizei* length = 0x%0.8p, GLint* params = 0x%0.8p)",
+ program, programInterface, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetBooleani_vRobustANGLE(GLenum target,
+ GLuint index,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLboolean *data)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLuint index = %u, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLboolean* data = 0x%0.8p)",
+ target, index, bufSize, length, data);
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetBooleani_vRobustANGLE(context, target, index, bufSize, &numParams, data))
+ {
+ return;
+ }
+
+ context->getBooleani_v(target, index, data);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetMultisamplefvRobustANGLE(GLenum pname,
+ GLuint index,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *val)
+{
+ EVENT(
+ "(GLenum pname = 0x%X, GLuint index = %u, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLfloat* val = 0x%0.8p)",
+ pname, index, bufSize, length, val);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetTexLevelParameterivRobustANGLE(GLenum target,
+ GLint level,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, "
+ "GLsizei* length = 0x%0.8p, GLint* params = 0x%0.8p)",
+ target, level, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetTexLevelParameterfvRobustANGLE(GLenum target,
+ GLint level,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLint level = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, "
+ "GLsizei* length = 0x%0.8p, GLfloat* params = 0x%0.8p)",
+ target, level, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetPointervRobustANGLERobustANGLE(GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ void **params)
+{
+ EVENT(
+ "(GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, void **params = "
+ "0x%0.8p)",
+ pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY ReadnPixelsRobustANGLE(GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLsizei *columns,
+ GLsizei *rows,
+ void *data)
+{
+ EVENT(
+ "(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, "
+ "GLenum format = 0x%X, GLenum type = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLsizei* columns = 0x%0.8p, GLsizei* rows = 0x%0.8p, void *data = 0x%0.8p)",
+ x, y, width, height, format, type, bufSize, length, columns, rows, data);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei writeLength = 0;
+ GLsizei writeColumns = 0;
+ GLsizei writeRows = 0;
+ if (!ValidateReadnPixelsRobustANGLE(context, x, y, width, height, format, type, bufSize,
+ &writeLength, &writeColumns, &writeRows, data))
+ {
+ return;
+ }
+
+ context->readPixels(x, y, width, height, format, type, data);
+
+ SetRobustLengthParam(length, writeLength);
+ SetRobustLengthParam(columns, writeColumns);
+ SetRobustLengthParam(rows, writeRows);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetnUniformfvRobustANGLE(GLuint program,
+ GLint location,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLfloat *params)
+{
+ EVENT(
+ "(GLuint program = %d, GLint location = %d, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLfloat* params = 0x%0.8p)",
+ program, location, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetnUniformivRobustANGLE(GLuint program,
+ GLint location,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint program = %d, GLint location = %d, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint* params = 0x%0.8p)",
+ program, location, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetnUniformuivRobustANGLE(GLuint program,
+ GLint location,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLuint *params)
+{
+ EVENT(
+ "(GLuint program = %u, GLint location = %d, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLuint* params = 0x%0.8p)",
+ program, location, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexParameterIivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, const GLint *params = "
+ "0x%0.8p)",
+ target, pname, bufSize, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY TexParameterIuivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLuint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, const GLuint *params = "
+ "0x%0.8p)",
+ target, pname, bufSize, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetTexParameterIivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint *params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetTexParameterIuivRobustANGLE(GLenum target,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLuint *params)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLuint *params = 0x%0.8p)",
+ target, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY SamplerParameterIivRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLint *param)
+{
+ EVENT(
+ "(GLuint sampler = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, const GLint *param = "
+ "0x%0.8p)",
+ sampler, pname, bufSize, param);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY SamplerParameterIuivRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ const GLuint *param)
+{
+ EVENT(
+ "(GLuint sampler = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, const GLuint *param = "
+ "0x%0.8p)",
+ sampler, pname, bufSize, param);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetSamplerParameterIivRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint sampler = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLint *params = 0x%0.8p)",
+ sampler, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetSamplerParameterIuivRobustANGLE(GLuint sampler,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLuint *params)
+{
+ EVENT(
+ "(GLuint sampler = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = "
+ "0x%0.8p, GLuint *params = 0x%0.8p)",
+ sampler, pname, bufSize, length, params);
+ UNIMPLEMENTED();
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetQueryObjectivRobustANGLE(GLuint id,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint *params)
+{
+ EVENT(
+ "(GLuint id = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLuint *params = 0x%0.8p)",
+ id, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetQueryObjectivRobustANGLE(context, id, pname, bufSize, &numParams, params))
+ {
+ return;
+ }
+
+ context->getQueryObjectiv(id, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetQueryObjecti64vRobustANGLE(GLuint id,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLint64 *params)
+{
+ EVENT(
+ "(GLuint id = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLint64 *params = 0x%0.8p)",
+ id, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetQueryObjecti64vRobustANGLE(context, id, pname, bufSize, &numParams, params))
+ {
+ return;
+ }
+
+ context->getQueryObjecti64v(id, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+ANGLE_EXPORT void GL_APIENTRY GetQueryObjectui64vRobustANGLE(GLuint id,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei *length,
+ GLuint64 *params)
+{
+ EVENT(
+ "(GLuint id = %d, GLenum pname = 0x%X, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, "
+ "GLuint64 *params = 0x%0.8p)",
+ id, pname, bufSize, length, params);
+
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ GLsizei numParams = 0;
+ if (!ValidateGetQueryObjectui64vRobustANGLE(context, id, pname, bufSize, &numParams,
+ params))
+ {
+ return;
+ }
+
+ context->getQueryObjectui64v(id, pname, params);
+ SetRobustLengthParam(length, numParams);
+ }
+}
+
+GL_APICALL void GL_APIENTRY FramebufferTextureMultiviewLayeredANGLE(GLenum target,
+ GLenum attachment,
+ GLuint texture,
+ GLint level,
+ GLint baseViewIndex,
+ GLsizei numViews)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum attachment = 0x%X, GLuint texture = %u, GLint level = %d, "
+ "GLint baseViewIndex = %d, GLsizei numViews = %d)",
+ target, attachment, texture, level, baseViewIndex, numViews);
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateFramebufferTextureMultiviewLayeredANGLE(context, target, attachment, texture,
+ level, baseViewIndex, numViews))
+ {
+ return;
+ }
+ context->framebufferTextureMultiviewLayeredANGLE(target, attachment, texture, level,
+ baseViewIndex, numViews);
+ }
+}
+
+GL_APICALL void GL_APIENTRY FramebufferTextureMultiviewSideBySideANGLE(GLenum target,
+ GLenum attachment,
+ GLuint texture,
+ GLint level,
+ GLsizei numViews,
+ const GLint *viewportOffsets)
+{
+ EVENT(
+ "(GLenum target = 0x%X, GLenum attachment = 0x%X, GLuint texture = %u, GLint level = %d, "
+ "GLsizei numViews = %d, GLsizei* viewportOffsets = 0x%0.8p)",
+ target, attachment, texture, level, numViews, viewportOffsets);
+ Context *context = GetValidGlobalContext();
+ if (context)
+ {
+ if (!context->skipValidation() &&
+ !ValidateFramebufferTextureMultiviewSideBySideANGLE(
+ context, target, attachment, texture, level, numViews, viewportOffsets))
+ {
+ return;
+ }
+ context->framebufferTextureMultiviewSideBySideANGLE(target, attachment, texture, level,
+ numViews, viewportOffsets);
+ }
+}
+
+} // gl