summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authordyen <dyen@chromium.org>2015-07-31 17:17:17 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-01 00:18:01 +0000
commit750e3d319500140954d81dd8cd966ae328b7bd62 (patch)
tree2b0c0270f1893c42d086812850945d3eee8c6f6c /gpu
parent8118f931536af287db26bdd107f63a3f8686ce44 (diff)
downloadchromium_src-750e3d319500140954d81dd8cd966ae328b7bd62.zip
chromium_src-750e3d319500140954d81dd8cd966ae328b7bd62.tar.gz
chromium_src-750e3d319500140954d81dd8cd966ae328b7bd62.tar.bz2
Revert various crash checks made to queries while tracking down a bug.
Now that we have pinpointed the crash, we should revert some of the CHECKs that were added since these were never hit. Revert "Temporarily crash the GPU process when unexpected failures happen." This reverts commit 27cfeeeaa3faee230d2d526b13a3b0dee056022e. Revert "Added extra checks for all query related errors." This reverts commit ddfc8b48070fa9bcef48b045d4a4b144e960f93f. Revert "Added some extra safe guards to remove possible errors for queries." This reverts commit 15a3067d09a85c463691e962885c033c8d8d792c. BUG=467678 Review URL: https://codereview.chromium.org/1270553003 Cr-Commit-Position: refs/heads/master@{#341445}
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/client/query_tracker.cc12
-rw-r--r--gpu/command_buffer/client/query_tracker.h1
-rw-r--r--gpu/command_buffer/client/query_tracker_unittest.cc6
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder.cc49
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc3
-rw-r--r--gpu/command_buffer/service/query_manager.cc5
6 files changed, 7 insertions, 69 deletions
diff --git a/gpu/command_buffer/client/query_tracker.cc b/gpu/command_buffer/client/query_tracker.cc
index bc23685..c85c6bb 100644
--- a/gpu/command_buffer/client/query_tracker.cc
+++ b/gpu/command_buffer/client/query_tracker.cc
@@ -31,8 +31,7 @@ QuerySyncManager::Bucket::Bucket(QuerySync* sync_mem,
QuerySyncManager::Bucket::~Bucket() = default;
QuerySyncManager::QuerySyncManager(MappedMemoryManager* manager)
- : mapped_memory_(manager),
- alloc_index_(0) {
+ : mapped_memory_(manager) {
DCHECK(manager);
}
@@ -70,10 +69,8 @@ bool QuerySyncManager::Alloc(QuerySyncManager::QueryInfo* info) {
unsigned short index_in_bucket = 0;
for (size_t i = 0; i < kSyncsPerBucket; i++) {
- size_t try_index = (i + alloc_index_) % kSyncsPerBucket;
- if (!bucket->in_use_queries[try_index]) {
- index_in_bucket = try_index;
- alloc_index_ = try_index + 1;
+ if (!bucket->in_use_queries[i]) {
+ index_in_bucket = i;
break;
}
}
@@ -115,7 +112,7 @@ QueryTracker::Query::Query(GLuint id, GLenum target,
target_(target),
info_(info),
state_(kUninitialized),
- submit_count_(456),
+ submit_count_(0),
token_(0),
flush_count_(0),
client_begin_time_us_(0),
@@ -238,7 +235,6 @@ QueryTracker::Query* QueryTracker::CreateQuery(GLuint id, GLenum target) {
if (!query_sync_manager_.Alloc(&info)) {
return nullptr;
}
- info.sync->process_count = 123;
Query* query = new Query(id, target, info);
std::pair<QueryIdMap::iterator, bool> result =
queries_.insert(std::make_pair(id, query));
diff --git a/gpu/command_buffer/client/query_tracker.h b/gpu/command_buffer/client/query_tracker.h
index 931bc1b..45f5681 100644
--- a/gpu/command_buffer/client/query_tracker.h
+++ b/gpu/command_buffer/client/query_tracker.h
@@ -69,7 +69,6 @@ class GLES2_IMPL_EXPORT QuerySyncManager {
private:
MappedMemoryManager* mapped_memory_;
std::deque<Bucket*> buckets_;
- size_t alloc_index_;
DISALLOW_COPY_AND_ASSIGN(QuerySyncManager);
};
diff --git a/gpu/command_buffer/client/query_tracker_unittest.cc b/gpu/command_buffer/client/query_tracker_unittest.cc
index 48aee6b..cba94d1 100644
--- a/gpu/command_buffer/client/query_tracker_unittest.cc
+++ b/gpu/command_buffer/client/query_tracker_unittest.cc
@@ -148,25 +148,25 @@ TEST_F(QueryTrackerTest, Query) {
// Create a Query.
QueryTracker::Query* query = query_tracker_->CreateQuery(
kId1, GL_ANY_SAMPLES_PASSED_EXT);
- const int32 start_submit_count = query->submit_count();
ASSERT_TRUE(query != NULL);
EXPECT_TRUE(query->NeverUsed());
EXPECT_FALSE(query->Pending());
EXPECT_EQ(0, query->token());
+ EXPECT_EQ(0, query->submit_count());
// Check MarkAsActive.
query->MarkAsActive();
EXPECT_FALSE(query->NeverUsed());
EXPECT_FALSE(query->Pending());
EXPECT_EQ(0, query->token());
- EXPECT_EQ(start_submit_count + 1, query->submit_count());
+ EXPECT_EQ(1, query->submit_count());
// Check MarkAsPending.
query->MarkAsPending(kToken);
EXPECT_FALSE(query->NeverUsed());
EXPECT_TRUE(query->Pending());
EXPECT_EQ(kToken, query->token());
- EXPECT_EQ(start_submit_count + 1, query->submit_count());
+ EXPECT_EQ(1, query->submit_count());
// Flush only once if no more flushes happened between a call to
// EndQuery command and CheckResultsAvailable
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 567d64a..fba0b90 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -11629,26 +11629,6 @@ error::Error GLES2DecoderImpl::HandleBeginQueryEXT(uint32 immediate_data_size,
break;
case GL_COMMANDS_COMPLETED_CHROMIUM:
if (!features().chromium_sync_query) {
-#if defined(OS_MACOSX)
- // TODO(dyen): Remove once we know what is failing.
- uint32_t boolean_flags = 0;
- if (gfx::g_driver_gl.ext.b_GL_ARB_sync)
- boolean_flags |= 1;
- if (gfx::g_driver_gl.ext.b_GL_APPLE_fence)
- boolean_flags |= 2;
- if (gfx::g_driver_gl.ext.b_GL_NV_fence)
- boolean_flags |= 4;
-
- CHECK(boolean_flags != 0) << "Nothing supported";
- CHECK(boolean_flags != 1) << "ARB";
- CHECK(boolean_flags != 2) << "APPLE";
- CHECK(boolean_flags != 3) << "ARB APPLE";
- CHECK(boolean_flags != 4) << "NV";
- CHECK(boolean_flags != 5) << "NV ARB";
- CHECK(boolean_flags != 6) << "NV APPLE";
- CHECK(boolean_flags != 7) << "NV ARB APPLE";
- CHECK(false) << "Unknown error.";
-#endif
LOCAL_SET_GL_ERROR(
GL_INVALID_OPERATION, "glBeginQueryEXT",
"not enabled for commands completed queries");
@@ -11681,21 +11661,12 @@ error::Error GLES2DecoderImpl::HandleBeginQueryEXT(uint32 immediate_data_size,
}
if (query_manager_->GetActiveQuery(target)) {
-#if defined(OS_MACOSX)
- // TODO(dyen): Remove once we know what is failing.
- CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM)
- << "Query already in progress";
-#endif
LOCAL_SET_GL_ERROR(
GL_INVALID_OPERATION, "glBeginQueryEXT", "query already in progress");
return error::kNoError;
}
if (client_id == 0) {
-#if defined(OS_MACOSX)
- // TODO(dyen): Remove once we know what is failing.
- CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Id is 0";
-#endif
LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBeginQueryEXT", "id is 0");
return error::kNoError;
}
@@ -11703,10 +11674,6 @@ error::Error GLES2DecoderImpl::HandleBeginQueryEXT(uint32 immediate_data_size,
QueryManager::Query* query = query_manager_->GetQuery(client_id);
if (!query) {
if (!query_manager_->IsValidQuery(client_id)) {
-#if defined(OS_MACOSX)
- // TODO(dyen): Remove once we know what is failing.
- CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Invalid ID";
-#endif
LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
"glBeginQueryEXT",
"id not made by glGenQueriesEXT");
@@ -11717,10 +11684,6 @@ error::Error GLES2DecoderImpl::HandleBeginQueryEXT(uint32 immediate_data_size,
}
if (query->target() != target) {
-#if defined(OS_MACOSX)
- // TODO(dyen): Remove once we know what is failing.
- CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Non-Matching Target";
-#endif
LOCAL_SET_GL_ERROR(
GL_INVALID_OPERATION, "glBeginQueryEXT", "target does not match");
return error::kNoError;
@@ -11731,10 +11694,6 @@ 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;
}
@@ -11750,20 +11709,12 @@ 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/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
index 2dfb1090..b8ec9d2 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
@@ -992,15 +992,12 @@ TEST_P(GLES2DecoderManualInitTest, BeginInvalidTargetQueryFails) {
GenHelper<GenQueriesEXTImmediate>(kNewClientId);
BeginQueryEXT begin_cmd;
-#if !defined(OS_MACOSX)
- // TODO(dyen): Remove once we know what is failing.
begin_cmd.Init(GL_COMMANDS_COMPLETED_CHROMIUM,
kNewClientId,
kSharedMemoryId,
kSharedMemoryOffset);
EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd));
EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
-#endif // !defined(OS_MACOSX)
begin_cmd.Init(GL_ANY_SAMPLES_PASSED,
kNewClientId,
diff --git a/gpu/command_buffer/service/query_manager.cc b/gpu/command_buffer/service/query_manager.cc
index ab9dd63..49f111f 100644
--- a/gpu/command_buffer/service/query_manager.cc
+++ b/gpu/command_buffer/service/query_manager.cc
@@ -1035,12 +1035,7 @@ 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;
}