| 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..c85c6bb66bf573d46d2e27c343529919164b76e3 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,27 @@ 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;
|
| + }
|
| +
|
| + query->QueryCounter(gl);
|
| + return true;
|
| +}
|
| +
|
| } // namespace gles2
|
| } // namespace gpu
|
|
|