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, ...@@ -4013,7 +4013,7 @@ void Context::renderbufferStorageMultisample(GLenum target,
void Context::getSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) void Context::getSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
{ {
const FenceSync *syncObject = getFenceSync(sync); 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) void Context::getFramebufferParameteriv(GLenum target, GLenum pname, GLint *params)
......
...@@ -888,10 +888,24 @@ void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, G ...@@ -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); 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) switch (pname)
{ {
case GL_OBJECT_TYPE: case GL_OBJECT_TYPE:
...@@ -912,6 +926,11 @@ Error QuerySynciv(const FenceSync *sync, GLenum pname, GLint *values) ...@@ -912,6 +926,11 @@ Error QuerySynciv(const FenceSync *sync, GLenum pname, GLint *values)
break; break;
} }
if (length != nullptr)
{
*length = 1;
}
return NoError(); return NoError();
} }
......
...@@ -97,7 +97,11 @@ void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufS ...@@ -97,7 +97,11 @@ void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufS
void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, GLint *params); 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 SetTexParameterf(Texture *texture, GLenum pname, GLfloat param);
void SetTexParameterfv(Texture *texture, GLenum pname, const GLfloat *params); 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