diff options
author | dyen <dyen@chromium.org> | 2015-07-27 00:01:37 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-27 07:03:05 +0000 |
commit | ddfc8b48070fa9bcef48b045d4a4b144e960f93f (patch) | |
tree | 2298f66742837f33cb885459c9bca6422f472649 /gpu | |
parent | 37919fe8630ebb57fb9b6b12f27c5c9482d1ccc5 (diff) | |
download | chromium_src-ddfc8b48070fa9bcef48b045d4a4b144e960f93f.zip chromium_src-ddfc8b48070fa9bcef48b045d4a4b144e960f93f.tar.gz chromium_src-ddfc8b48070fa9bcef48b045d4a4b144e960f93f.tar.bz2 |
Added extra checks for all query related errors.
In order to help track down errors relating to the renderer crashing on
Mac OSX, temporarily crash the GPU whenever we get any unexpected
errors related to GL_COMMANDS_COMPLETED_CHROMIUM.
R=piman@chromium.org
BUG=467678
Review URL: https://codereview.chromium.org/1260583003
Cr-Commit-Position: refs/heads/master@{#340423}
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.cc | 12 | ||||
-rw-r--r-- | gpu/command_buffer/service/query_manager.cc | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 019879b..5cab02c 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -11702,6 +11702,10 @@ error::Error GLES2DecoderImpl::HandleBeginQueryEXT(uint32 immediate_data_size, } if (!query_manager_->BeginQuery(query)) { +#if defined(OS_MACOSX) + // TODO(dyen): Remove once we know what is failing. + CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Out of bounds"; +#endif return error::kOutOfBounds; } @@ -11717,12 +11721,20 @@ error::Error GLES2DecoderImpl::HandleEndQueryEXT(uint32 immediate_data_size, QueryManager::Query* query = query_manager_->GetActiveQuery(target); if (!query) { +#if defined(OS_MACOSX) + // TODO(dyen): Remove once we know what is failing. + CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Target not active"; +#endif LOCAL_SET_GL_ERROR( GL_INVALID_OPERATION, "glEndQueryEXT", "No active query"); return error::kNoError; } if (!query_manager_->EndQuery(query, submit_count)) { +#if defined(OS_MACOSX) + // TODO(dyen): Remove once we know what is failing. + CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Out of bounds"; +#endif return error::kOutOfBounds; } diff --git a/gpu/command_buffer/service/query_manager.cc b/gpu/command_buffer/service/query_manager.cc index 09bad18..6700f78 100644 --- a/gpu/command_buffer/service/query_manager.cc +++ b/gpu/command_buffer/service/query_manager.cc @@ -969,7 +969,12 @@ bool QueryManager::ProcessPendingQueries(bool did_finish) { pending_queries_.pop_front(); } // If glFinish() has been called, all of our queries should be completed. +#if defined(OS_MACOSX) + // TODO(dyen): Remove once we know what is failing. + CHECK(!did_finish || pending_queries_.empty()); +#else DCHECK(!did_finish || pending_queries_.empty()); +#endif return true; } |