Chromium Code Reviews| Index: gpu/command_buffer/client/gles2_implementation.cc |
| diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc |
| index d4e77f2d2c492dc9f1951b740ba3c451d8dcb50a..37a1e9c80412d13cb8bb3fa9d8900809224cbd58 100644 |
| --- a/gpu/command_buffer/client/gles2_implementation.cc |
| +++ b/gpu/command_buffer/client/gles2_implementation.cc |
| @@ -4888,7 +4888,6 @@ void GLES2Implementation::BeginQueryEXT(GLenum target, GLuint id) { |
| return; |
| } |
| break; |
| - // TODO(dyen): Also support GL_TIMESTAMP. |
| case GL_TIME_ELAPSED_EXT: |
| if (!capabilities_.timer_queries) { |
| SetGLError( |
| @@ -4899,7 +4898,7 @@ void GLES2Implementation::BeginQueryEXT(GLenum target, GLuint id) { |
| break; |
| default: |
| SetGLError( |
| - GL_INVALID_OPERATION, "glBeginQueryEXT", "unknown query target"); |
| + GL_INVALID_ENUM, "glBeginQueryEXT", "unknown query target"); |
| return; |
| } |
| @@ -4939,6 +4938,44 @@ void GLES2Implementation::EndQueryEXT(GLenum target) { |
| CheckGLError(); |
| } |
| +void GLES2Implementation::QueryCounterEXT(GLuint id, GLenum target) { |
| + GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] QueryCounterEXT(" |
| + << id |
| + << ", " << GLES2Util::GetStringQueryTarget(target) << ")"); |
| + |
| + // Check capabilities |
|
piman
2015/07/16 01:05:52
nit: remove superfluous comment
David Yen
2015/07/16 20:21:12
Done.
|
| + switch (target) { |
| + case GL_TIMESTAMP_EXT: |
| + if (!capabilities_.timer_queries) { |
| + SetGLError( |
| + GL_INVALID_OPERATION, "glQueryCounterEXT", |
| + "not enabled for timing queries"); |
| + return; |
| + } |
| + break; |
| + default: |
| + SetGLError( |
| + GL_INVALID_ENUM, "glQueryCounterEXT", "unknown query target"); |
| + return; |
| + } |
| + |
| + // id = 0 INV_OP |
|
piman
2015/07/16 01:05:52
nit: remove superfluous comment
David Yen
2015/07/16 20:21:12
Done.
|
| + if (id == 0) { |
| + SetGLError(GL_INVALID_OPERATION, "glQueryCounterEXT", "id is 0"); |
| + return; |
| + } |
| + |
| + // if not GENned INV_OPERATION |
|
piman
2015/07/16 01:05:52
nit: remove superfluous comment
David Yen
2015/07/16 20:21:12
Done.
|
| + if (!query_id_allocator_->InUse(id)) { |
| + SetGLError(GL_INVALID_OPERATION, "glQueryCounterEXT", "invalid id"); |
| + return; |
| + } |
| + |
| + if (query_tracker_->QueryCounter(id, target, this)) |
| + CheckGLError(); |
| +} |
| + |
| void GLES2Implementation::GetQueryivEXT( |
| GLenum target, GLenum pname, GLint* params) { |
| GPU_CLIENT_SINGLE_THREAD_CHECK(); |