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

Side by Side Diff: gpu/command_buffer/service/query_manager.h

Issue 12211144: Revert 181883 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
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 #ifndef GPU_COMMAND_BUFFER_SERVICE_QUERY_MANAGER_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_QUERY_MANAGER_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_QUERY_MANAGER_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_QUERY_MANAGER_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/hash_tables.h" 10 #include "base/hash_tables.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 // Returns false if shared memory for sync is invalid. 83 // Returns false if shared memory for sync is invalid.
84 bool MarkAsCompleted(uint64 result); 84 bool MarkAsCompleted(uint64 result);
85 85
86 void MarkAsPending(uint32 submit_count) { 86 void MarkAsPending(uint32 submit_count) {
87 DCHECK(!pending_); 87 DCHECK(!pending_);
88 pending_ = true; 88 pending_ = true;
89 submit_count_ = submit_count; 89 submit_count_ = submit_count;
90 } 90 }
91 91
92 void UnmarkAsPending() {
93 DCHECK(pending_);
94 pending_ = false;
95 }
96
97 // Returns false if shared memory for sync is invalid. 92 // Returns false if shared memory for sync is invalid.
98 bool AddToPendingQueue(uint32 submit_count) { 93 bool AddToPendingQueue(uint32 submit_count) {
99 return manager_->AddPendingQuery(this, submit_count); 94 return manager_->AddPendingQuery(this, submit_count);
100 } 95 }
101 96
102 // Returns false if shared memory for sync is invalid.
103 bool AddToPendingTransferQueue(uint32 submit_count) {
104 return manager_->AddPendingTransferQuery(this, submit_count);
105 }
106
107 void BeginQueryHelper(GLenum target, GLuint id) { 97 void BeginQueryHelper(GLenum target, GLuint id) {
108 manager_->BeginQueryHelper(target, id); 98 manager_->BeginQueryHelper(target, id);
109 } 99 }
110 100
111 void EndQueryHelper(GLenum target) { 101 void EndQueryHelper(GLenum target) {
112 manager_->EndQueryHelper(target); 102 manager_->EndQueryHelper(target);
113 } 103 }
114 104
115 uint32 submit_count() const {
116 return submit_count_;
117 }
118
119 private: 105 private:
120 friend class QueryManager; 106 friend class QueryManager;
121 friend class QueryManagerTest; 107 friend class QueryManagerTest;
122 friend class base::RefCounted<Query>; 108 friend class base::RefCounted<Query>;
123 109
110 uint32 submit_count() const {
111 return submit_count_;
112 }
113
124 // The manager that owns this Query. 114 // The manager that owns this Query.
125 QueryManager* manager_; 115 QueryManager* manager_;
126 116
127 // The type of query. 117 // The type of query.
128 GLenum target_; 118 GLenum target_;
129 119
130 // The shared memory used with this Query. 120 // The shared memory used with this Query.
131 int32 shm_id_; 121 int32 shm_id_;
132 uint32 shm_offset_; 122 uint32 shm_offset_;
133 123
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 // Returns false if any query is pointing to invalid shared memory. 155 // Returns false if any query is pointing to invalid shared memory.
166 bool EndQuery(Query* query, uint32 submit_count); 156 bool EndQuery(Query* query, uint32 submit_count);
167 157
168 // Processes pending queries. Returns false if any queries are pointing 158 // Processes pending queries. Returns false if any queries are pointing
169 // to invalid shared memory. 159 // to invalid shared memory.
170 bool ProcessPendingQueries(); 160 bool ProcessPendingQueries();
171 161
172 // True if there are pending queries. 162 // True if there are pending queries.
173 bool HavePendingQueries(); 163 bool HavePendingQueries();
174 164
175 // Processes pending transfer queries. Returns false if any queries are
176 // pointing to invalid shared memory.
177 bool ProcessPendingTransferQueries();
178
179 // True if there are pending transfer queries.
180 bool HavePendingTransferQueries();
181
182 GLES2Decoder* decoder() const { 165 GLES2Decoder* decoder() const {
183 return decoder_; 166 return decoder_;
184 } 167 }
185 168
186 private: 169 private:
187 void StartTracking(Query* query); 170 void StartTracking(Query* query);
188 void StopTracking(Query* query); 171 void StopTracking(Query* query);
189 172
190 // Wrappers for BeginQueryARB and EndQueryARB to hide differences between 173 // Wrappers for BeginQueryARB and EndQueryARB to hide differences between
191 // ARB_occlusion_query2 and EXT_occlusion_query_boolean. 174 // ARB_occlusion_query2 and EXT_occlusion_query_boolean.
192 void BeginQueryHelper(GLenum target, GLuint id); 175 void BeginQueryHelper(GLenum target, GLuint id);
193 void EndQueryHelper(GLenum target); 176 void EndQueryHelper(GLenum target);
194 177
195 // Adds to queue of queries waiting for completion. 178 // Adds to queue of queries waiting for completion.
196 // Returns false if any query is pointing to invalid shared memory. 179 // Returns false if any query is pointing to invalid shared memory.
197 bool AddPendingQuery(Query* query, uint32 submit_count); 180 bool AddPendingQuery(Query* query, uint32 submit_count);
198 181
199 // Adds to queue of transfer queries waiting for completion.
200 // Returns false if any query is pointing to invalid shared memory.
201 bool AddPendingTransferQuery(Query* query, uint32 submit_count);
202
203 // Removes a query from the queue of pending queries. 182 // Removes a query from the queue of pending queries.
204 // Returns false if any query is pointing to invalid shared memory. 183 // Returns false if any query is pointing to invalid shared memory.
205 bool RemovePendingQuery(Query* query); 184 bool RemovePendingQuery(Query* query);
206 185
207 // Returns a target used for the underlying GL extension 186 // Returns a target used for the underlying GL extension
208 // used to emulate a query. 187 // used to emulate a query.
209 GLenum AdjustTargetForEmulation(GLenum target); 188 GLenum AdjustTargetForEmulation(GLenum target);
210 189
211 // Used to validate shared memory and get GL errors. 190 // Used to validate shared memory and get GL errors.
212 GLES2Decoder* decoder_; 191 GLES2Decoder* decoder_;
213 192
214 bool use_arb_occlusion_query2_for_occlusion_query_boolean_; 193 bool use_arb_occlusion_query2_for_occlusion_query_boolean_;
215 bool use_arb_occlusion_query_for_occlusion_query_boolean_; 194 bool use_arb_occlusion_query_for_occlusion_query_boolean_;
216 195
217 // Counts the number of Queries allocated with 'this' as their manager. 196 // Counts the number of Queries allocated with 'this' as their manager.
218 // Allows checking no Query will outlive this. 197 // Allows checking no Query will outlive this.
219 unsigned query_count_; 198 unsigned query_count_;
220 199
221 // Info for each query in the system. 200 // Info for each query in the system.
222 typedef base::hash_map<GLuint, Query::Ref> QueryMap; 201 typedef base::hash_map<GLuint, Query::Ref> QueryMap;
223 QueryMap queries_; 202 QueryMap queries_;
224 203
225 // Queries waiting for completion. 204 // Queries waiting for completion.
226 typedef std::deque<Query::Ref> QueryQueue; 205 typedef std::deque<Query::Ref> QueryQueue;
227 QueryQueue pending_queries_; 206 QueryQueue pending_queries_;
228 207
229 // Async pixel transfer queries waiting for completion.
230 QueryQueue pending_transfer_queries_;
231
232 DISALLOW_COPY_AND_ASSIGN(QueryManager); 208 DISALLOW_COPY_AND_ASSIGN(QueryManager);
233 }; 209 };
234 210
235 } // namespace gles2 211 } // namespace gles2
236 } // namespace gpu 212 } // namespace gpu
237 213
238 #endif // GPU_COMMAND_BUFFER_SERVICE_QUERY_MANAGER_H_ 214 #endif // GPU_COMMAND_BUFFER_SERVICE_QUERY_MANAGER_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/query_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698