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_BUFFER_MANAGER_H_ | 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_BUFFER_MANAGER_H_ |
6 #define GPU_COMMAND_BUFFER_SERVICE_BUFFER_MANAGER_H_ | 6 #define GPU_COMMAND_BUFFER_SERVICE_BUFFER_MANAGER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
11 #include <map> | 11 #include <map> |
| 12 #include <memory> |
12 #include <vector> | 13 #include <vector> |
13 | 14 |
14 #include "base/containers/hash_tables.h" | 15 #include "base/containers/hash_tables.h" |
15 #include "base/logging.h" | 16 #include "base/logging.h" |
16 #include "base/macros.h" | 17 #include "base/macros.h" |
17 #include "base/memory/ref_counted.h" | 18 #include "base/memory/ref_counted.h" |
18 #include "base/memory/scoped_ptr.h" | |
19 #include "gpu/command_buffer/common/buffer.h" | 19 #include "gpu/command_buffer/common/buffer.h" |
20 #include "gpu/command_buffer/service/gl_utils.h" | 20 #include "gpu/command_buffer/service/gl_utils.h" |
21 #include "gpu/command_buffer/service/memory_tracking.h" | 21 #include "gpu/command_buffer/service/memory_tracking.h" |
22 #include "gpu/gpu_export.h" | 22 #include "gpu/gpu_export.h" |
23 | 23 |
24 namespace gpu { | 24 namespace gpu { |
25 namespace gles2 { | 25 namespace gles2 { |
26 | 26 |
27 class BufferManager; | 27 class BufferManager; |
28 struct ContextState; | 28 struct ContextState; |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 GLuint service_id_; | 198 GLuint service_id_; |
199 | 199 |
200 // The first target of buffer. 0 = unset. | 200 // The first target of buffer. 0 = unset. |
201 // It is set the first time bindBuffer() is called and cannot be changed. | 201 // It is set the first time bindBuffer() is called and cannot be changed. |
202 GLenum initial_target_; | 202 GLenum initial_target_; |
203 | 203 |
204 // Usage of buffer. | 204 // Usage of buffer. |
205 GLenum usage_; | 205 GLenum usage_; |
206 | 206 |
207 // Data cached from last glMapBufferRange call. | 207 // Data cached from last glMapBufferRange call. |
208 scoped_ptr<MappedRange> mapped_range_; | 208 std::unique_ptr<MappedRange> mapped_range_; |
209 | 209 |
210 // A map of ranges to the highest value in that range of a certain type. | 210 // A map of ranges to the highest value in that range of a certain type. |
211 typedef std::map<Range, GLuint, Range::Less> RangeToMaxValueMap; | 211 typedef std::map<Range, GLuint, Range::Less> RangeToMaxValueMap; |
212 RangeToMaxValueMap range_set_; | 212 RangeToMaxValueMap range_set_; |
213 }; | 213 }; |
214 | 214 |
215 // This class keeps track of the buffers and their sizes so we can do | 215 // This class keeps track of the buffers and their sizes so we can do |
216 // bounds checking. | 216 // bounds checking. |
217 // | 217 // |
218 // NOTE: To support shared resources an instance of this class will need to be | 218 // NOTE: To support shared resources an instance of this class will need to be |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 bool UseShadowBuffer(GLenum target, GLenum usage); | 321 bool UseShadowBuffer(GLenum target, GLenum usage); |
322 | 322 |
323 // Sets the size, usage and initial data of a buffer. | 323 // Sets the size, usage and initial data of a buffer. |
324 // If data is NULL buffer will be initialized to 0 if shadowed. | 324 // If data is NULL buffer will be initialized to 0 if shadowed. |
325 void SetInfo(Buffer* buffer, | 325 void SetInfo(Buffer* buffer, |
326 GLenum target, | 326 GLenum target, |
327 GLsizeiptr size, | 327 GLsizeiptr size, |
328 GLenum usage, | 328 GLenum usage, |
329 bool use_shadow); | 329 bool use_shadow); |
330 | 330 |
331 scoped_ptr<MemoryTypeTracker> memory_type_tracker_; | 331 std::unique_ptr<MemoryTypeTracker> memory_type_tracker_; |
332 MemoryTracker* memory_tracker_; | 332 MemoryTracker* memory_tracker_; |
333 scoped_refptr<FeatureInfo> feature_info_; | 333 scoped_refptr<FeatureInfo> feature_info_; |
334 | 334 |
335 // Info for each buffer in the system. | 335 // Info for each buffer in the system. |
336 typedef base::hash_map<GLuint, scoped_refptr<Buffer> > BufferMap; | 336 typedef base::hash_map<GLuint, scoped_refptr<Buffer> > BufferMap; |
337 BufferMap buffers_; | 337 BufferMap buffers_; |
338 | 338 |
339 // Whether or not buffers can be bound to multiple targets. | 339 // Whether or not buffers can be bound to multiple targets. |
340 bool allow_buffers_on_multiple_targets_; | 340 bool allow_buffers_on_multiple_targets_; |
341 | 341 |
342 // Whether or not allow using GL_FIXED type for vertex attribs. | 342 // Whether or not allow using GL_FIXED type for vertex attribs. |
343 bool allow_fixed_attribs_; | 343 bool allow_fixed_attribs_; |
344 | 344 |
345 // Counts the number of Buffer allocated with 'this' as its manager. | 345 // Counts the number of Buffer allocated with 'this' as its manager. |
346 // Allows to check no Buffer will outlive this. | 346 // Allows to check no Buffer will outlive this. |
347 unsigned int buffer_count_; | 347 unsigned int buffer_count_; |
348 | 348 |
349 GLuint primitive_restart_fixed_index_; | 349 GLuint primitive_restart_fixed_index_; |
350 | 350 |
351 bool have_context_; | 351 bool have_context_; |
352 bool use_client_side_arrays_for_stream_buffers_; | 352 bool use_client_side_arrays_for_stream_buffers_; |
353 | 353 |
354 DISALLOW_COPY_AND_ASSIGN(BufferManager); | 354 DISALLOW_COPY_AND_ASSIGN(BufferManager); |
355 }; | 355 }; |
356 | 356 |
357 } // namespace gles2 | 357 } // namespace gles2 |
358 } // namespace gpu | 358 } // namespace gpu |
359 | 359 |
360 #endif // GPU_COMMAND_BUFFER_SERVICE_BUFFER_MANAGER_H_ | 360 #endif // GPU_COMMAND_BUFFER_SERVICE_BUFFER_MANAGER_H_ |
OLD | NEW |