Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: gpu/command_buffer/client/query_tracker.cc

Issue 1542513002: Switch to standard integer types in gpu/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/client/query_tracker.h" 5 #include "gpu/command_buffer/client/query_tracker.h"
6 6
7 #include <GLES2/gl2.h> 7 #include <GLES2/gl2.h>
8 #include <GLES2/gl2ext.h> 8 #include <GLES2/gl2ext.h>
9 #include <GLES2/gl2extchromium.h> 9 #include <GLES2/gl2extchromium.h>
10 10
11 #include <limits.h> 11 #include <limits.h>
12 #include <stddef.h>
13 #include <stdint.h>
12 14
13 #include "base/atomicops.h" 15 #include "base/atomicops.h"
14 #include "base/numerics/safe_conversions.h" 16 #include "base/numerics/safe_conversions.h"
15 #include "gpu/command_buffer/client/gles2_cmd_helper.h" 17 #include "gpu/command_buffer/client/gles2_cmd_helper.h"
16 #include "gpu/command_buffer/client/gles2_implementation.h" 18 #include "gpu/command_buffer/client/gles2_implementation.h"
17 #include "gpu/command_buffer/client/mapped_memory.h" 19 #include "gpu/command_buffer/client/mapped_memory.h"
18 #include "gpu/command_buffer/common/time.h" 20 #include "gpu/command_buffer/common/time.h"
19 21
20 namespace gpu { 22 namespace gpu {
21 namespace gles2 { 23 namespace gles2 {
22 24
23 QuerySyncManager::Bucket::Bucket(QuerySync* sync_mem, 25 QuerySyncManager::Bucket::Bucket(QuerySync* sync_mem,
24 int32 shm_id, 26 int32_t shm_id,
25 unsigned int shm_offset) 27 unsigned int shm_offset)
26 : syncs(sync_mem), 28 : syncs(sync_mem), shm_id(shm_id), base_shm_offset(shm_offset) {}
27 shm_id(shm_id),
28 base_shm_offset(shm_offset) {
29 }
30 29
31 QuerySyncManager::Bucket::~Bucket() = default; 30 QuerySyncManager::Bucket::~Bucket() = default;
32 31
33 QuerySyncManager::QuerySyncManager(MappedMemoryManager* manager) 32 QuerySyncManager::QuerySyncManager(MappedMemoryManager* manager)
34 : mapped_memory_(manager) { 33 : mapped_memory_(manager) {
35 DCHECK(manager); 34 DCHECK(manager);
36 } 35 }
37 36
38 QuerySyncManager::~QuerySyncManager() { 37 QuerySyncManager::~QuerySyncManager() {
39 while (!buckets_.empty()) { 38 while (!buckets_.empty()) {
40 mapped_memory_->Free(buckets_.front()->syncs); 39 mapped_memory_->Free(buckets_.front()->syncs);
41 delete buckets_.front(); 40 delete buckets_.front();
42 buckets_.pop_front(); 41 buckets_.pop_front();
43 } 42 }
44 } 43 }
45 44
46 bool QuerySyncManager::Alloc(QuerySyncManager::QueryInfo* info) { 45 bool QuerySyncManager::Alloc(QuerySyncManager::QueryInfo* info) {
47 DCHECK(info); 46 DCHECK(info);
48 Bucket* bucket = nullptr; 47 Bucket* bucket = nullptr;
49 for (Bucket* bucket_candidate : buckets_) { 48 for (Bucket* bucket_candidate : buckets_) {
50 // In C++11 STL this could be replaced with 49 // In C++11 STL this could be replaced with
51 // if (!bucket_candidate->in_use_queries.all()) { ... } 50 // if (!bucket_candidate->in_use_queries.all()) { ... }
52 if (bucket_candidate->in_use_queries.count() != kSyncsPerBucket) { 51 if (bucket_candidate->in_use_queries.count() != kSyncsPerBucket) {
53 bucket = bucket_candidate; 52 bucket = bucket_candidate;
54 break; 53 break;
55 } 54 }
56 } 55 }
57 if (!bucket) { 56 if (!bucket) {
58 int32 shm_id; 57 int32_t shm_id;
59 unsigned int shm_offset; 58 unsigned int shm_offset;
60 void* mem = mapped_memory_->Alloc( 59 void* mem = mapped_memory_->Alloc(
61 kSyncsPerBucket * sizeof(QuerySync), &shm_id, &shm_offset); 60 kSyncsPerBucket * sizeof(QuerySync), &shm_id, &shm_offset);
62 if (!mem) { 61 if (!mem) {
63 return false; 62 return false;
64 } 63 }
65 QuerySync* syncs = static_cast<QuerySync*>(mem); 64 QuerySync* syncs = static_cast<QuerySync*>(mem);
66 bucket = new Bucket(syncs, shm_id, shm_offset); 65 bucket = new Bucket(syncs, shm_id, shm_offset);
67 buckets_.push_back(bucket); 66 buckets_.push_back(bucket);
68 } 67 }
69 68
70 size_t index_in_bucket = 0; 69 size_t index_in_bucket = 0;
71 for (size_t i = 0; i < kSyncsPerBucket; i++) { 70 for (size_t i = 0; i < kSyncsPerBucket; i++) {
72 if (!bucket->in_use_queries[i]) { 71 if (!bucket->in_use_queries[i]) {
73 index_in_bucket = i; 72 index_in_bucket = i;
74 break; 73 break;
75 } 74 }
76 } 75 }
77 76
78 uint32 shm_offset = 77 uint32_t shm_offset =
79 bucket->base_shm_offset + index_in_bucket * sizeof(QuerySync); 78 bucket->base_shm_offset + index_in_bucket * sizeof(QuerySync);
80 QuerySync* sync = bucket->syncs + index_in_bucket; 79 QuerySync* sync = bucket->syncs + index_in_bucket;
81 *info = QueryInfo(bucket, bucket->shm_id, shm_offset, sync); 80 *info = QueryInfo(bucket, bucket->shm_id, shm_offset, sync);
82 info->sync->Reset(); 81 info->sync->Reset();
83 bucket->in_use_queries[index_in_bucket] = true; 82 bucket->in_use_queries[index_in_bucket] = true;
84 return true; 83 return true;
85 } 84 }
86 85
87 void QuerySyncManager::Free(const QuerySyncManager::QueryInfo& info) { 86 void QuerySyncManager::Free(const QuerySyncManager::QueryInfo& info) {
88 DCHECK_NE(info.bucket->in_use_queries.count(), 0u); 87 DCHECK_NE(info.bucket->in_use_queries.count(), 0u);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 helper->Flush(); 198 helper->Flush();
200 } else { 199 } else {
201 // Insert no-ops so that eventually the GPU process will see more work. 200 // Insert no-ops so that eventually the GPU process will see more work.
202 helper->Noop(1); 201 helper->Noop(1);
203 } 202 }
204 } 203 }
205 } 204 }
206 return state_ == kComplete; 205 return state_ == kComplete;
207 } 206 }
208 207
209 uint64 QueryTracker::Query::GetResult() const { 208 uint64_t QueryTracker::Query::GetResult() const {
210 DCHECK(state_ == kComplete || state_ == kUninitialized); 209 DCHECK(state_ == kComplete || state_ == kUninitialized);
211 return result_; 210 return result_;
212 } 211 }
213 212
214 QueryTracker::QueryTracker(MappedMemoryManager* manager) 213 QueryTracker::QueryTracker(MappedMemoryManager* manager)
215 : query_sync_manager_(manager), 214 : query_sync_manager_(manager),
216 mapped_memory_(manager), 215 mapped_memory_(manager),
217 disjoint_count_sync_shm_id_(-1), 216 disjoint_count_sync_shm_id_(-1),
218 disjoint_count_sync_shm_offset_(0), 217 disjoint_count_sync_shm_offset_(0),
219 disjoint_count_sync_(nullptr), 218 disjoint_count_sync_(nullptr),
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 if (local_disjoint_count_ != disjoint_count) { 385 if (local_disjoint_count_ != disjoint_count) {
387 local_disjoint_count_ = disjoint_count; 386 local_disjoint_count_ = disjoint_count;
388 return true; 387 return true;
389 } 388 }
390 } 389 }
391 return false; 390 return false;
392 } 391 }
393 392
394 } // namespace gles2 393 } // namespace gles2
395 } // namespace gpu 394 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/query_tracker.h ('k') | gpu/command_buffer/client/query_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698