Index: gpu/command_buffer/service/renderbuffer_manager.h |
diff --git a/gpu/command_buffer/service/renderbuffer_manager.h b/gpu/command_buffer/service/renderbuffer_manager.h |
index 7107493712685b62d14141a889e9ff4db680d321..cadf04a4ecb25ded38689cf2c732843145bcb1f5 100644 |
--- a/gpu/command_buffer/service/renderbuffer_manager.h |
+++ b/gpu/command_buffer/service/renderbuffer_manager.h |
@@ -17,117 +17,106 @@ |
namespace gpu { |
namespace gles2 { |
-// This class keeps track of the renderbuffers and whether or not they have |
-// been cleared. |
-class GPU_EXPORT RenderbufferManager { |
+class RenderbufferManager; |
+ |
+// Info about a Renderbuffer. |
+class GPU_EXPORT Renderbuffer |
+ : public base::RefCounted<Renderbuffer> { |
public: |
- // Info about Renderbuffers currently in the system. |
- class GPU_EXPORT RenderbufferInfo |
- : public base::RefCounted<RenderbufferInfo> { |
- public: |
- typedef scoped_refptr<RenderbufferInfo> Ref; |
- |
- RenderbufferInfo(RenderbufferManager* manager, GLuint service_id) |
- : manager_(manager), |
- deleted_(false), |
- service_id_(service_id), |
- cleared_(true), |
- has_been_bound_(false), |
- samples_(0), |
- internal_format_(GL_RGBA4), |
- width_(0), |
- height_(0) { |
- manager_->StartTracking(this); |
- } |
+ Renderbuffer(RenderbufferManager* manager, GLuint service_id); |
- GLuint service_id() const { |
- return service_id_; |
- } |
+ GLuint service_id() const { |
+ return service_id_; |
+ } |
- bool cleared() const { |
- return cleared_; |
- } |
+ bool cleared() const { |
+ return cleared_; |
+ } |
- GLenum internal_format() const { |
- return internal_format_; |
- } |
+ GLenum internal_format() const { |
+ return internal_format_; |
+ } |
- GLsizei samples() const { |
- return samples_; |
- } |
+ GLsizei samples() const { |
+ return samples_; |
+ } |
- GLsizei width() const { |
- return width_; |
- } |
+ GLsizei width() const { |
+ return width_; |
+ } |
- GLsizei height() const { |
- return height_; |
- } |
+ GLsizei height() const { |
+ return height_; |
+ } |
- bool IsDeleted() const { |
- return deleted_; |
- } |
+ bool IsDeleted() const { |
+ return deleted_; |
+ } |
- void MarkAsValid() { |
- has_been_bound_ = true; |
- } |
+ void MarkAsValid() { |
+ has_been_bound_ = true; |
+ } |
- bool IsValid() const { |
- return has_been_bound_ && !IsDeleted(); |
- } |
+ bool IsValid() const { |
+ return has_been_bound_ && !IsDeleted(); |
+ } |
- size_t EstimatedSize(); |
+ size_t EstimatedSize(); |
- void AddToSignature(std::string* signature) const; |
+ void AddToSignature(std::string* signature) const; |
- private: |
- friend class RenderbufferManager; |
- friend class base::RefCounted<RenderbufferInfo>; |
+ private: |
+ friend class RenderbufferManager; |
+ friend class base::RefCounted<Renderbuffer>; |
- ~RenderbufferInfo(); |
+ ~Renderbuffer(); |
- void set_cleared(bool cleared) { |
- cleared_ = cleared; |
- } |
+ void set_cleared(bool cleared) { |
+ cleared_ = cleared; |
+ } |
- void SetInfo( |
- GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { |
- samples_ = samples; |
- internal_format_ = internalformat; |
- width_ = width; |
- height_ = height; |
- cleared_ = false; |
- } |
+ void SetInfo( |
+ GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { |
+ samples_ = samples; |
+ internal_format_ = internalformat; |
+ width_ = width; |
+ height_ = height; |
+ cleared_ = false; |
+ } |
- void MarkAsDeleted() { |
- deleted_ = true; |
- } |
+ void MarkAsDeleted() { |
+ deleted_ = true; |
+ } |
- // RenderbufferManager that owns this RenderbufferInfo. |
- RenderbufferManager* manager_; |
+ // RenderbufferManager that owns this Renderbuffer. |
+ RenderbufferManager* manager_; |
- bool deleted_; |
+ bool deleted_; |
- // Service side renderbuffer id. |
- GLuint service_id_; |
+ // Service side renderbuffer id. |
+ GLuint service_id_; |
- // Whether this renderbuffer has been cleared |
- bool cleared_; |
+ // Whether this renderbuffer has been cleared |
+ bool cleared_; |
- // Whether this renderbuffer has ever been bound. |
- bool has_been_bound_; |
+ // Whether this renderbuffer has ever been bound. |
+ bool has_been_bound_; |
- // Number of samples (for multi-sampled renderbuffers) |
- GLsizei samples_; |
+ // Number of samples (for multi-sampled renderbuffers) |
+ GLsizei samples_; |
- // Renderbuffer internalformat set through RenderbufferStorage(). |
- GLenum internal_format_; |
+ // Renderbuffer internalformat set through RenderbufferStorage(). |
+ GLenum internal_format_; |
- // Dimensions of renderbuffer. |
- GLsizei width_; |
- GLsizei height_; |
- }; |
+ // Dimensions of renderbuffer. |
+ GLsizei width_; |
+ GLsizei height_; |
+}; |
+// This class keeps track of the renderbuffers and whether or not they have |
+// been cleared. |
+class GPU_EXPORT RenderbufferManager { |
+ public: |
RenderbufferManager(MemoryTracker* memory_tracker, |
GLint max_renderbuffer_size, |
GLint max_samples); |
@@ -146,22 +135,22 @@ class GPU_EXPORT RenderbufferManager { |
} |
void SetInfo( |
- RenderbufferInfo* renderbuffer, |
+ Renderbuffer* renderbuffer, |
GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); |
- void SetCleared(RenderbufferInfo* renderbuffer, bool cleared); |
+ void SetCleared(Renderbuffer* renderbuffer, bool cleared); |
// Must call before destruction. |
void Destroy(bool have_context); |
- // Creates a RenderbufferInfo for the given renderbuffer. |
- void CreateRenderbufferInfo(GLuint client_id, GLuint service_id); |
+ // Creates a Renderbuffer for the given renderbuffer. |
+ void CreateRenderbuffer(GLuint client_id, GLuint service_id); |
// Gets the renderbuffer info for the given renderbuffer. |
- RenderbufferInfo* GetRenderbufferInfo(GLuint client_id); |
+ Renderbuffer* GetRenderbuffer(GLuint client_id); |
// Removes a renderbuffer info for the given renderbuffer. |
- void RemoveRenderbufferInfo(GLuint client_id); |
+ void RemoveRenderbuffer(GLuint client_id); |
// Gets a client id for a given service id. |
bool GetClientId(GLuint service_id, GLuint* client_id) const; |
@@ -175,8 +164,10 @@ class GPU_EXPORT RenderbufferManager { |
static GLenum InternalRenderbufferFormatToImplFormat(GLenum impl_format); |
private: |
- void StartTracking(RenderbufferInfo* renderbuffer); |
- void StopTracking(RenderbufferInfo* renderbuffer); |
+ friend class Renderbuffer; |
+ |
+ void StartTracking(Renderbuffer* renderbuffer); |
+ void StopTracking(Renderbuffer* renderbuffer); |
scoped_ptr<MemoryTypeTracker> memory_tracker_; |
@@ -185,14 +176,15 @@ class GPU_EXPORT RenderbufferManager { |
int num_uncleared_renderbuffers_; |
- // Counts the number of RenderbufferInfo allocated with 'this' as its manager. |
- // Allows to check no RenderbufferInfo will outlive this. |
+ // Counts the number of Renderbuffer allocated with 'this' as its manager. |
+ // Allows to check no Renderbuffer will outlive this. |
unsigned renderbuffer_info_count_; |
bool have_context_; |
// Info for each renderbuffer in the system. |
- typedef base::hash_map<GLuint, RenderbufferInfo::Ref> RenderbufferInfoMap; |
+ typedef base::hash_map<GLuint, |
+ scoped_refptr<Renderbuffer> > RenderbufferInfoMap; |
RenderbufferInfoMap renderbuffer_infos_; |
DISALLOW_COPY_AND_ASSIGN(RenderbufferManager); |