diff options
Diffstat (limited to 'chromium/gpu/command_buffer/service/query_manager.h')
-rw-r--r-- | chromium/gpu/command_buffer/service/query_manager.h | 28 |
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_; |