Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Side by Side Diff: gpu/command_buffer/service/renderbuffer_manager.h

Issue 14188053: gpu: Change Produce/ConsumeTexture to allow texture sharing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/mailbox_manager.cc ('k') | gpu/command_buffer/service/renderbuffer_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698