summaryrefslogtreecommitdiffstats
path: root/chromium/gpu/command_buffer/service/query_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/gpu/command_buffer/service/query_manager.h')
-rw-r--r--chromium/gpu/command_buffer/service/query_manager.h28
1 files changed, 17 insertions, 11 deletions
diff --git a/chromium/gpu/command_buffer/service/query_manager.h b/chromium/gpu/command_buffer/service/query_manager.h
index d77982b897f..36d424cefb3 100644
--- a/chromium/gpu/command_buffer/service/query_manager.h
+++ b/chromium/gpu/command_buffer/service/query_manager.h
@@ -7,6 +7,7 @@
#include <deque>
#include <vector>
+#include "base/atomicops.h"
#include "base/basictypes.h"
#include "base/containers/hash_tables.h"
#include "base/logging.h"
@@ -61,7 +62,7 @@ class GPU_EXPORT QueryManager {
virtual bool Begin() = 0;
// Returns false if shared memory for sync is invalid.
- virtual bool End(uint32 submit_count) = 0;
+ virtual bool End(base::subtle::Atomic32 submit_count) = 0;
// Returns false if shared memory for sync is invalid.
virtual bool Process() = 0;
@@ -84,7 +85,7 @@ class GPU_EXPORT QueryManager {
// Returns false if shared memory for sync is invalid.
bool MarkAsCompleted(uint64 result);
- void MarkAsPending(uint32 submit_count) {
+ void MarkAsPending(base::subtle::Atomic32 submit_count) {
DCHECK(!pending_);
pending_ = true;
submit_count_ = submit_count;
@@ -96,12 +97,12 @@ class GPU_EXPORT QueryManager {
}
// Returns false if shared memory for sync is invalid.
- bool AddToPendingQueue(uint32 submit_count) {
+ bool AddToPendingQueue(base::subtle::Atomic32 submit_count) {
return manager_->AddPendingQuery(this, submit_count);
}
// Returns false if shared memory for sync is invalid.
- bool AddToPendingTransferQueue(uint32 submit_count) {
+ bool AddToPendingTransferQueue(base::subtle::Atomic32 submit_count) {
return manager_->AddPendingTransferQuery(this, submit_count);
}
@@ -113,9 +114,7 @@ class GPU_EXPORT QueryManager {
manager_->EndQueryHelper(target);
}
- uint32 submit_count() const {
- return submit_count_;
- }
+ base::subtle::Atomic32 submit_count() const { return submit_count_; }
private:
friend class QueryManager;
@@ -135,7 +134,7 @@ class GPU_EXPORT QueryManager {
uint32 shm_offset_;
// Count to set process count do when completed.
- uint32 submit_count_;
+ base::subtle::Atomic32 submit_count_;
// True if in the queue.
bool pending_;
@@ -169,7 +168,7 @@ class GPU_EXPORT QueryManager {
bool BeginQuery(Query* query);
// Returns false if any query is pointing to invalid shared memory.
- bool EndQuery(Query* query, uint32 submit_count);
+ bool EndQuery(Query* query, base::subtle::Atomic32 submit_count);
// Processes pending queries. Returns false if any queries are pointing
// to invalid shared memory.
@@ -189,6 +188,9 @@ class GPU_EXPORT QueryManager {
return decoder_;
}
+ void GenQueries(GLsizei n, const GLuint* queries);
+ bool IsValidQuery(GLuint id);
+
private:
void StartTracking(Query* query);
void StopTracking(Query* query);
@@ -200,11 +202,12 @@ class GPU_EXPORT QueryManager {
// Adds to queue of queries waiting for completion.
// Returns false if any query is pointing to invalid shared memory.
- bool AddPendingQuery(Query* query, uint32 submit_count);
+ bool AddPendingQuery(Query* query, base::subtle::Atomic32 submit_count);
// Adds to queue of transfer queries waiting for completion.
// Returns false if any query is pointing to invalid shared memory.
- bool AddPendingTransferQuery(Query* query, uint32 submit_count);
+ bool AddPendingTransferQuery(Query* query,
+ base::subtle::Atomic32 submit_count);
// Removes a query from the queue of pending queries.
// Returns false if any query is pointing to invalid shared memory.
@@ -228,6 +231,9 @@ class GPU_EXPORT QueryManager {
typedef base::hash_map<GLuint, scoped_refptr<Query> > QueryMap;
QueryMap queries_;
+ typedef base::hash_set<GLuint> GeneratedQueryIds;
+ GeneratedQueryIds generated_query_ids_;
+
// Queries waiting for completion.
typedef std::deque<scoped_refptr<Query> > QueryQueue;
QueryQueue pending_queries_;