Commit 82483b93 by Geoff Lang Committed by Commit Bot

Obey the bufSize and write to the length parameter in glGetSynciv.

BUG=angleproject:1985 TEST=conformance2/state/gl-object-get-calls Change-Id: Ic83c408b60d394ff5719beaedc5d4721b7811a47 Reviewed-on: https://chromium-review.googlesource.com/474551Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent df79af59
......@@ -4013,7 +4013,7 @@ void Context::renderbufferStorageMultisample(GLenum target,
void Context::getSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
{
const FenceSync *syncObject = getFenceSync(sync);
handleError(QuerySynciv(syncObject, pname, values));
handleError(QuerySynciv(syncObject, pname, bufSize, length, values));
}
void Context::getFramebufferParameteriv(GLenum target, GLenum pname, GLint *params)
......
......@@ -888,10 +888,24 @@ void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, G
}
}
Error QuerySynciv(const FenceSync *sync, GLenum pname, GLint *values)
Error QuerySynciv(const FenceSync *sync,
GLenum pname,
GLsizei bufSize,
GLsizei *length,
GLint *values)
{
ASSERT(sync);
// All queries return one value, exit early if the buffer can't fit anything.
if (bufSize < 1)
{
if (length != nullptr)
{
*length = 0;
}
return NoError();
}
switch (pname)
{
case GL_OBJECT_TYPE:
......@@ -912,6 +926,11 @@ Error QuerySynciv(const FenceSync *sync, GLenum pname, GLint *values)
break;
}
if (length != nullptr)
{
*length = 1;
}
return NoError();
}
......
......@@ -97,7 +97,11 @@ void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufS
void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, GLint *params);
Error QuerySynciv(const FenceSync *sync, GLenum pname, GLint *values);
Error QuerySynciv(const FenceSync *sync,
GLenum pname,
GLsizei bufSize,
GLsizei *length,
GLint *values);
void SetTexParameterf(Texture *texture, GLenum pname, GLfloat param);
void SetTexParameterfv(Texture *texture, GLenum pname, const GLfloat *params);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment