| 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);
|
|
|