OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 CC_RESOURCES_RESOURCE_PROVIDER_H_ | 5 #ifndef CC_RESOURCES_RESOURCE_PROVIDER_H_ |
6 #define CC_RESOURCES_RESOURCE_PROVIDER_H_ | 6 #define CC_RESOURCES_RESOURCE_PROVIDER_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 class TextureUploader; | 53 class TextureUploader; |
54 | 54 |
55 // This class is not thread-safe and can only be called from the thread it was | 55 // This class is not thread-safe and can only be called from the thread it was |
56 // created on (in practice, the impl thread). | 56 // created on (in practice, the impl thread). |
57 class CC_EXPORT ResourceProvider { | 57 class CC_EXPORT ResourceProvider { |
58 public: | 58 public: |
59 typedef unsigned ResourceId; | 59 typedef unsigned ResourceId; |
60 typedef std::vector<ResourceId> ResourceIdArray; | 60 typedef std::vector<ResourceId> ResourceIdArray; |
61 typedef std::set<ResourceId> ResourceIdSet; | 61 typedef std::set<ResourceId> ResourceIdSet; |
62 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; | 62 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; |
63 enum TextureUsageHint { | 63 enum TextureHint { |
64 TextureUsageAny, | 64 TextureHintDefault, |
65 TextureUsageFramebuffer, | 65 TextureHintImmutable, |
| 66 TextureHintFramebuffer, |
66 }; | 67 }; |
67 enum ResourceType { | 68 enum ResourceType { |
68 InvalidType = 0, | 69 InvalidType = 0, |
69 GLTexture = 1, | 70 GLTexture = 1, |
70 Bitmap, | 71 Bitmap, |
71 }; | 72 }; |
72 | 73 |
73 static scoped_ptr<ResourceProvider> Create( | 74 static scoped_ptr<ResourceProvider> Create( |
74 OutputSurface* output_surface, | 75 OutputSurface* output_surface, |
75 SharedBitmapManager* shared_bitmap_manager, | 76 SharedBitmapManager* shared_bitmap_manager, |
(...skipping 23 matching lines...) Expand all Loading... |
99 bool AllowOverlay(ResourceId id); | 100 bool AllowOverlay(ResourceId id); |
100 | 101 |
101 // Producer interface. | 102 // Producer interface. |
102 | 103 |
103 ResourceType default_resource_type() const { return default_resource_type_; } | 104 ResourceType default_resource_type() const { return default_resource_type_; } |
104 ResourceType GetResourceType(ResourceId id); | 105 ResourceType GetResourceType(ResourceId id); |
105 | 106 |
106 // Creates a resource of the default resource type. | 107 // Creates a resource of the default resource type. |
107 ResourceId CreateResource(const gfx::Size& size, | 108 ResourceId CreateResource(const gfx::Size& size, |
108 GLint wrap_mode, | 109 GLint wrap_mode, |
109 TextureUsageHint hint, | 110 TextureHint hint, |
110 ResourceFormat format); | 111 ResourceFormat format); |
111 | 112 |
112 // Creates a resource which is tagged as being managed for GPU memory | 113 // Creates a resource which is tagged as being managed for GPU memory |
113 // accounting purposes. | 114 // accounting purposes. |
114 ResourceId CreateManagedResource(const gfx::Size& size, | 115 ResourceId CreateManagedResource(const gfx::Size& size, |
115 GLenum target, | 116 GLenum target, |
116 GLint wrap_mode, | 117 GLint wrap_mode, |
117 TextureUsageHint hint, | 118 TextureHint hint, |
118 ResourceFormat format); | 119 ResourceFormat format); |
119 | 120 |
120 // You can also explicitly create a specific resource type. | 121 // You can also explicitly create a specific resource type. |
121 ResourceId CreateGLTexture(const gfx::Size& size, | 122 ResourceId CreateGLTexture(const gfx::Size& size, |
122 GLenum target, | 123 GLenum target, |
123 GLenum texture_pool, | 124 GLenum texture_pool, |
124 GLint wrap_mode, | 125 GLint wrap_mode, |
125 TextureUsageHint hint, | 126 TextureHint hint, |
126 ResourceFormat format); | 127 ResourceFormat format); |
127 | 128 |
128 ResourceId CreateBitmap(const gfx::Size& size, GLint wrap_mode); | 129 ResourceId CreateBitmap(const gfx::Size& size, GLint wrap_mode); |
129 // Wraps an IOSurface into a GL resource. | 130 // Wraps an IOSurface into a GL resource. |
130 ResourceId CreateResourceFromIOSurface(const gfx::Size& size, | 131 ResourceId CreateResourceFromIOSurface(const gfx::Size& size, |
131 unsigned io_surface_id); | 132 unsigned io_surface_id); |
132 | 133 |
133 // Wraps an external texture mailbox into a GL resource. | 134 // Wraps an external texture mailbox into a GL resource. |
134 ResourceId CreateResourceFromTextureMailbox( | 135 ResourceId CreateResourceFromTextureMailbox( |
135 const TextureMailbox& mailbox, | 136 const TextureMailbox& mailbox, |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 | 381 |
381 Resource(); | 382 Resource(); |
382 ~Resource(); | 383 ~Resource(); |
383 Resource(unsigned texture_id, | 384 Resource(unsigned texture_id, |
384 const gfx::Size& size, | 385 const gfx::Size& size, |
385 Origin origin, | 386 Origin origin, |
386 GLenum target, | 387 GLenum target, |
387 GLenum filter, | 388 GLenum filter, |
388 GLenum texture_pool, | 389 GLenum texture_pool, |
389 GLint wrap_mode, | 390 GLint wrap_mode, |
390 TextureUsageHint hint, | 391 TextureHint hint, |
391 ResourceFormat format); | 392 ResourceFormat format); |
392 Resource(uint8_t* pixels, | 393 Resource(uint8_t* pixels, |
393 SharedBitmap* bitmap, | 394 SharedBitmap* bitmap, |
394 const gfx::Size& size, | 395 const gfx::Size& size, |
395 Origin origin, | 396 Origin origin, |
396 GLenum filter, | 397 GLenum filter, |
397 GLint wrap_mode); | 398 GLint wrap_mode); |
398 Resource(const SharedBitmapId& bitmap_id, | 399 Resource(const SharedBitmapId& bitmap_id, |
399 const gfx::Size& size, | 400 const gfx::Size& size, |
400 Origin origin, | 401 Origin origin, |
(...skipping 28 matching lines...) Expand all Loading... |
429 gfx::Size size; | 430 gfx::Size size; |
430 Origin origin; | 431 Origin origin; |
431 GLenum target; | 432 GLenum target; |
432 // TODO(skyostil): Use a separate sampler object for filter state. | 433 // TODO(skyostil): Use a separate sampler object for filter state. |
433 GLenum original_filter; | 434 GLenum original_filter; |
434 GLenum filter; | 435 GLenum filter; |
435 unsigned image_id; | 436 unsigned image_id; |
436 unsigned bound_image_id; | 437 unsigned bound_image_id; |
437 GLenum texture_pool; | 438 GLenum texture_pool; |
438 GLint wrap_mode; | 439 GLint wrap_mode; |
439 TextureUsageHint hint; | 440 TextureHint hint; |
440 ResourceType type; | 441 ResourceType type; |
441 ResourceFormat format; | 442 ResourceFormat format; |
442 SharedBitmapId shared_bitmap_id; | 443 SharedBitmapId shared_bitmap_id; |
443 SharedBitmap* shared_bitmap; | 444 SharedBitmap* shared_bitmap; |
444 linked_ptr<GpuRasterBuffer> gpu_raster_buffer; | 445 linked_ptr<GpuRasterBuffer> gpu_raster_buffer; |
445 linked_ptr<ImageRasterBuffer> image_raster_buffer; | 446 linked_ptr<ImageRasterBuffer> image_raster_buffer; |
446 linked_ptr<PixelRasterBuffer> pixel_raster_buffer; | 447 linked_ptr<PixelRasterBuffer> pixel_raster_buffer; |
447 }; | 448 }; |
448 typedef base::hash_map<ResourceId, Resource> ResourceMap; | 449 typedef base::hash_map<ResourceId, Resource> ResourceMap; |
449 | 450 |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
701 return format_gl_data_format[format]; | 702 return format_gl_data_format[format]; |
702 } | 703 } |
703 | 704 |
704 inline GLenum GLInternalFormat(ResourceFormat format) { | 705 inline GLenum GLInternalFormat(ResourceFormat format) { |
705 return GLDataFormat(format); | 706 return GLDataFormat(format); |
706 } | 707 } |
707 | 708 |
708 } // namespace cc | 709 } // namespace cc |
709 | 710 |
710 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ | 711 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ |
OLD | NEW |