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_CONTEXT_GROUP_H_ | 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_CONTEXT_GROUP_H_ |
6 #define GPU_COMMAND_BUFFER_SERVICE_CONTEXT_GROUP_H_ | 6 #define GPU_COMMAND_BUFFER_SERVICE_CONTEXT_GROUP_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 namespace gles2 { | 27 namespace gles2 { |
28 | 28 |
29 class ProgramCache; | 29 class ProgramCache; |
30 class BufferManager; | 30 class BufferManager; |
31 class GLES2Decoder; | 31 class GLES2Decoder; |
32 class FramebufferManager; | 32 class FramebufferManager; |
33 class MailboxManager; | 33 class MailboxManager; |
34 class RenderbufferManager; | 34 class RenderbufferManager; |
35 class PathManager; | 35 class PathManager; |
36 class ProgramManager; | 36 class ProgramManager; |
| 37 class SamplerManager; |
37 class ShaderManager; | 38 class ShaderManager; |
38 class TextureManager; | 39 class TextureManager; |
39 class SubscriptionRefSet; | 40 class SubscriptionRefSet; |
40 class ValuebufferManager; | 41 class ValuebufferManager; |
41 class MemoryTracker; | 42 class MemoryTracker; |
42 struct DisallowedFeatures; | 43 struct DisallowedFeatures; |
43 | 44 |
44 // A Context Group helps manage multiple GLES2Decoders that share | 45 // A Context Group helps manage multiple GLES2Decoders that share |
45 // resources. | 46 // resources. |
46 class GPU_EXPORT ContextGroup : public base::RefCounted<ContextGroup> { | 47 class GPU_EXPORT ContextGroup : public base::RefCounted<ContextGroup> { |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 } | 167 } |
167 | 168 |
168 ShaderManager* shader_manager() const { | 169 ShaderManager* shader_manager() const { |
169 return shader_manager_.get(); | 170 return shader_manager_.get(); |
170 } | 171 } |
171 | 172 |
172 TransferBufferManager* transfer_buffer_manager() const { | 173 TransferBufferManager* transfer_buffer_manager() const { |
173 return transfer_buffer_manager_.get(); | 174 return transfer_buffer_manager_.get(); |
174 } | 175 } |
175 | 176 |
| 177 SamplerManager* sampler_manager() const { |
| 178 return sampler_manager_.get(); |
| 179 } |
| 180 |
176 uint32 GetMemRepresented() const; | 181 uint32 GetMemRepresented() const; |
177 | 182 |
178 // Loses all the context associated with this group. | 183 // Loses all the context associated with this group. |
179 void LoseContexts(error::ContextLostReason reason); | 184 void LoseContexts(error::ContextLostReason reason); |
180 | 185 |
181 bool GetBufferServiceId(GLuint client_id, GLuint* service_id) const; | 186 bool GetBufferServiceId(GLuint client_id, GLuint* service_id) const; |
182 | 187 |
183 void AddSamplerId(GLuint client_id, GLuint service_id) { | |
184 samplers_id_map_[client_id] = service_id; | |
185 } | |
186 | |
187 bool GetSamplerServiceId(GLuint client_id, GLuint* service_id) const { | |
188 base::hash_map<GLuint, GLuint>::const_iterator iter = | |
189 samplers_id_map_.find(client_id); | |
190 if (iter == samplers_id_map_.end()) | |
191 return false; | |
192 if (service_id) | |
193 *service_id = iter->second; | |
194 return true; | |
195 } | |
196 | |
197 void RemoveSamplerId(GLuint client_id) { | |
198 samplers_id_map_.erase(client_id); | |
199 } | |
200 | |
201 void AddTransformFeedbackId(GLuint client_id, GLuint service_id) { | 188 void AddTransformFeedbackId(GLuint client_id, GLuint service_id) { |
202 transformfeedbacks_id_map_[client_id] = service_id; | 189 transformfeedbacks_id_map_[client_id] = service_id; |
203 } | 190 } |
204 | 191 |
205 bool GetTransformFeedbackServiceId( | 192 bool GetTransformFeedbackServiceId( |
206 GLuint client_id, GLuint* service_id) const { | 193 GLuint client_id, GLuint* service_id) const { |
207 if (client_id == 0) { | 194 if (client_id == 0) { |
208 // Default one. | 195 // Default one. |
209 if (service_id) | 196 if (service_id) |
210 *service_id = 0; | 197 *service_id = 0; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 scoped_ptr<RenderbufferManager> renderbuffer_manager_; | 268 scoped_ptr<RenderbufferManager> renderbuffer_manager_; |
282 | 269 |
283 scoped_ptr<TextureManager> texture_manager_; | 270 scoped_ptr<TextureManager> texture_manager_; |
284 | 271 |
285 scoped_ptr<PathManager> path_manager_; | 272 scoped_ptr<PathManager> path_manager_; |
286 | 273 |
287 scoped_ptr<ProgramManager> program_manager_; | 274 scoped_ptr<ProgramManager> program_manager_; |
288 | 275 |
289 scoped_ptr<ShaderManager> shader_manager_; | 276 scoped_ptr<ShaderManager> shader_manager_; |
290 | 277 |
| 278 scoped_ptr<SamplerManager> sampler_manager_; |
| 279 |
291 scoped_ptr<ValuebufferManager> valuebuffer_manager_; | 280 scoped_ptr<ValuebufferManager> valuebuffer_manager_; |
292 | 281 |
293 scoped_refptr<FeatureInfo> feature_info_; | 282 scoped_refptr<FeatureInfo> feature_info_; |
294 | 283 |
295 std::vector<base::WeakPtr<gles2::GLES2Decoder> > decoders_; | 284 std::vector<base::WeakPtr<gles2::GLES2Decoder> > decoders_; |
296 | 285 |
297 // Mappings from client side IDs to service side IDs. | 286 // Mappings from client side IDs to service side IDs. |
298 base::hash_map<GLuint, GLuint> samplers_id_map_; | |
299 base::hash_map<GLuint, GLuint> transformfeedbacks_id_map_; | 287 base::hash_map<GLuint, GLuint> transformfeedbacks_id_map_; |
300 base::hash_map<GLuint, GLsync> syncs_id_map_; | 288 base::hash_map<GLuint, GLsync> syncs_id_map_; |
301 | 289 |
302 DISALLOW_COPY_AND_ASSIGN(ContextGroup); | 290 DISALLOW_COPY_AND_ASSIGN(ContextGroup); |
303 }; | 291 }; |
304 | 292 |
305 } // namespace gles2 | 293 } // namespace gles2 |
306 } // namespace gpu | 294 } // namespace gpu |
307 | 295 |
308 #endif // GPU_COMMAND_BUFFER_SERVICE_CONTEXT_GROUP_H_ | 296 #endif // GPU_COMMAND_BUFFER_SERVICE_CONTEXT_GROUP_H_ |
OLD | NEW |