Chromium Code Reviews| Index: gpu/command_buffer/client/query_tracker.cc |
| diff --git a/gpu/command_buffer/client/query_tracker.cc b/gpu/command_buffer/client/query_tracker.cc |
| index 37a147878a7561cdb609ea536f4f275482c74955..c4ef5888fa617e7f618b02e7584938f4f50bcd3f 100644 |
| --- a/gpu/command_buffer/client/query_tracker.cc |
| +++ b/gpu/command_buffer/client/query_tracker.cc |
| @@ -166,6 +166,14 @@ void QueryTracker::Query::End(GLES2Implementation* gl) { |
| MarkAsPending(gl->helper()->InsertToken()); |
| } |
| +void QueryTracker::Query::QueryCounter(GLES2Implementation* gl) { |
| + MarkAsActive(); |
| + flush_count_ = gl->helper()->flush_generation(); |
| + gl->helper()->QueryCounterEXT(target(), id(), shm_id(), shm_offset(), |
| + submit_count()); |
| + MarkAsPending(gl->helper()->InsertToken()); |
| +} |
| + |
| bool QueryTracker::Query::CheckResultsAvailable( |
| CommandBufferHelper* helper) { |
| if (Pending()) { |
| @@ -324,5 +332,31 @@ bool QueryTracker::EndQuery(GLenum target, GLES2Implementation* gl) { |
| return true; |
| } |
| +bool QueryTracker::QueryCounter(GLuint id, GLenum target, |
| + GLES2Implementation* gl) { |
| + QueryTracker::Query* query = GetQuery(id); |
| + if (!query) { |
| + query = CreateQuery(id, target); |
| + if (!query) { |
| + gl->SetGLError(GL_OUT_OF_MEMORY, |
| + "glQueryCounterEXT", |
| + "transfer buffer allocation failed"); |
| + return false; |
| + } |
| + } else if (query->target() != target) { |
| + gl->SetGLError(GL_INVALID_OPERATION, |
| + "glQueryCounterEXT", |
| + "target does not match"); |
| + return false; |
| + } |
| + |
| + // Spec is not clear how long an "active query" for a QueryCounter is since |
| + // there is no ending mark such as glEndQuery. Just use the latest query |
| + // until it has been deleted. |
| + query->QueryCounter(gl); |
| + current_queries_[query->target()] = query; |
|
piman
2015/07/16 01:05:52
According to my reading of the spec, the query nev
David Yen
2015/07/16 20:21:12
Hmm, I will remove it then. Done.
|
| + return true; |
| +} |
| + |
| } // namespace gles2 |
| } // namespace gpu |