| OLD | NEW |
| 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_RENDERBUFFER_MANAGER_H_ | 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ |
| 6 #define GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ | 6 #define GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/hash_tables.h" | 10 #include "base/hash_tables.h" |
| 11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "gpu/command_buffer/service/gl_utils.h" | 13 #include "gpu/command_buffer/service/gl_utils.h" |
| 14 #include "gpu/command_buffer/service/memory_tracking.h" | 14 #include "gpu/command_buffer/service/memory_tracking.h" |
| 15 #include "gpu/gpu_export.h" | 15 #include "gpu/gpu_export.h" |
| 16 | 16 |
| 17 namespace gpu { | 17 namespace gpu { |
| 18 namespace gles2 { | 18 namespace gles2 { |
| 19 | 19 |
| 20 class RenderbufferManager; | 20 class RenderbufferManager; |
| 21 | 21 |
| 22 // Info about a Renderbuffer. | 22 // Info about a Renderbuffer. |
| 23 class GPU_EXPORT Renderbuffer | 23 class GPU_EXPORT Renderbuffer |
| 24 : public base::RefCounted<Renderbuffer> { | 24 : public base::RefCounted<Renderbuffer> { |
| 25 public: | 25 public: |
| 26 Renderbuffer(RenderbufferManager* manager, GLuint service_id); | 26 Renderbuffer(RenderbufferManager* manager, |
| 27 GLuint client_id, |
| 28 GLuint service_id); |
| 27 | 29 |
| 28 GLuint service_id() const { | 30 GLuint service_id() const { |
| 29 return service_id_; | 31 return service_id_; |
| 30 } | 32 } |
| 31 | 33 |
| 34 GLuint client_id() const { |
| 35 return client_id_; |
| 36 } |
| 37 |
| 32 bool cleared() const { | 38 bool cleared() const { |
| 33 return cleared_; | 39 return cleared_; |
| 34 } | 40 } |
| 35 | 41 |
| 36 GLenum internal_format() const { | 42 GLenum internal_format() const { |
| 37 return internal_format_; | 43 return internal_format_; |
| 38 } | 44 } |
| 39 | 45 |
| 40 GLsizei samples() const { | 46 GLsizei samples() const { |
| 41 return samples_; | 47 return samples_; |
| 42 } | 48 } |
| 43 | 49 |
| 44 GLsizei width() const { | 50 GLsizei width() const { |
| 45 return width_; | 51 return width_; |
| 46 } | 52 } |
| 47 | 53 |
| 48 GLsizei height() const { | 54 GLsizei height() const { |
| 49 return height_; | 55 return height_; |
| 50 } | 56 } |
| 51 | 57 |
| 52 bool IsDeleted() const { | 58 bool IsDeleted() const { |
| 53 return deleted_; | 59 return client_id_ == 0; |
| 54 } | 60 } |
| 55 | 61 |
| 56 void MarkAsValid() { | 62 void MarkAsValid() { |
| 57 has_been_bound_ = true; | 63 has_been_bound_ = true; |
| 58 } | 64 } |
| 59 | 65 |
| 60 bool IsValid() const { | 66 bool IsValid() const { |
| 61 return has_been_bound_ && !IsDeleted(); | 67 return has_been_bound_ && !IsDeleted(); |
| 62 } | 68 } |
| 63 | 69 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 78 void SetInfo( | 84 void SetInfo( |
| 79 GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { | 85 GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { |
| 80 samples_ = samples; | 86 samples_ = samples; |
| 81 internal_format_ = internalformat; | 87 internal_format_ = internalformat; |
| 82 width_ = width; | 88 width_ = width; |
| 83 height_ = height; | 89 height_ = height; |
| 84 cleared_ = false; | 90 cleared_ = false; |
| 85 } | 91 } |
| 86 | 92 |
| 87 void MarkAsDeleted() { | 93 void MarkAsDeleted() { |
| 88 deleted_ = true; | 94 client_id_ = 0; |
| 89 } | 95 } |
| 90 | 96 |
| 91 // RenderbufferManager that owns this Renderbuffer. | 97 // RenderbufferManager that owns this Renderbuffer. |
| 92 RenderbufferManager* manager_; | 98 RenderbufferManager* manager_; |
| 93 | 99 |
| 94 bool deleted_; | 100 // Client side renderbuffer id. |
| 101 GLuint client_id_; |
| 95 | 102 |
| 96 // Service side renderbuffer id. | 103 // Service side renderbuffer id. |
| 97 GLuint service_id_; | 104 GLuint service_id_; |
| 98 | 105 |
| 99 // Whether this renderbuffer has been cleared | 106 // Whether this renderbuffer has been cleared |
| 100 bool cleared_; | 107 bool cleared_; |
| 101 | 108 |
| 102 // Whether this renderbuffer has ever been bound. | 109 // Whether this renderbuffer has ever been bound. |
| 103 bool has_been_bound_; | 110 bool has_been_bound_; |
| 104 | 111 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 | 152 |
| 146 // Creates a Renderbuffer for the given renderbuffer ids. | 153 // Creates a Renderbuffer for the given renderbuffer ids. |
| 147 void CreateRenderbuffer(GLuint client_id, GLuint service_id); | 154 void CreateRenderbuffer(GLuint client_id, GLuint service_id); |
| 148 | 155 |
| 149 // Gets the renderbuffer for the given renderbuffer id. | 156 // Gets the renderbuffer for the given renderbuffer id. |
| 150 Renderbuffer* GetRenderbuffer(GLuint client_id); | 157 Renderbuffer* GetRenderbuffer(GLuint client_id); |
| 151 | 158 |
| 152 // Removes a renderbuffer for the given renderbuffer id. | 159 // Removes a renderbuffer for the given renderbuffer id. |
| 153 void RemoveRenderbuffer(GLuint client_id); | 160 void RemoveRenderbuffer(GLuint client_id); |
| 154 | 161 |
| 155 // Gets a client id for a given service id. | |
| 156 bool GetClientId(GLuint service_id, GLuint* client_id) const; | |
| 157 | |
| 158 size_t mem_represented() const { | 162 size_t mem_represented() const { |
| 159 return memory_tracker_->GetMemRepresented(); | 163 return memory_tracker_->GetMemRepresented(); |
| 160 } | 164 } |
| 161 | 165 |
| 162 static bool ComputeEstimatedRenderbufferSize( | 166 static bool ComputeEstimatedRenderbufferSize( |
| 163 int width, int height, int samples, int internal_format, uint32* size); | 167 int width, int height, int samples, int internal_format, uint32* size); |
| 164 static GLenum InternalRenderbufferFormatToImplFormat(GLenum impl_format); | 168 static GLenum InternalRenderbufferFormatToImplFormat(GLenum impl_format); |
| 165 | 169 |
| 166 private: | 170 private: |
| 167 friend class Renderbuffer; | 171 friend class Renderbuffer; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 186 typedef base::hash_map<GLuint, scoped_refptr<Renderbuffer> > RenderbufferMap; | 190 typedef base::hash_map<GLuint, scoped_refptr<Renderbuffer> > RenderbufferMap; |
| 187 RenderbufferMap renderbuffers_; | 191 RenderbufferMap renderbuffers_; |
| 188 | 192 |
| 189 DISALLOW_COPY_AND_ASSIGN(RenderbufferManager); | 193 DISALLOW_COPY_AND_ASSIGN(RenderbufferManager); |
| 190 }; | 194 }; |
| 191 | 195 |
| 192 } // namespace gles2 | 196 } // namespace gles2 |
| 193 } // namespace gpu | 197 } // namespace gpu |
| 194 | 198 |
| 195 #endif // GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ | 199 #endif // GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ |
| OLD | NEW |