Chromium Code Reviews| Index: cc/resources/resource_provider.h |
| diff --git a/cc/resources/resource_provider.h b/cc/resources/resource_provider.h |
| index e2d7878415d333e2f059e7984cd849337163a2cf..c1bc057eb7c1da9988cbbe897bf75877a522341c 100644 |
| --- a/cc/resources/resource_provider.h |
| +++ b/cc/resources/resource_provider.h |
| @@ -52,6 +52,13 @@ class CC_EXPORT ResourceProvider { |
| GLTexture = 1, |
| Bitmap, |
| }; |
| + enum TextureFormat { |
|
reveman
2013/09/12 15:57:40
This will need to be set properly for software res
kaanb
2013/09/13 00:11:08
Done.
|
| + INVALID_FORMAT, |
|
reveman
2013/09/12 15:57:40
what's needed to remove INVALID_FORMAT? Is this ju
kaanb
2013/09/13 00:11:08
Done.
|
| + RGBA_8888, |
| + RGBA_4444, |
| + BGRA_8888, |
| + LUMINANCE_8, |
| + }; |
| static scoped_ptr<ResourceProvider> Create(OutputSurface* output_surface, |
| int highp_threshold_min); |
| @@ -64,7 +71,7 @@ class CC_EXPORT ResourceProvider { |
| void DidLoseOutputSurface() { lost_output_surface_ = true; } |
| int max_texture_size() const { return max_texture_size_; } |
| - GLenum best_texture_format() const { return best_texture_format_; } |
| + TextureFormat best_texture_format() const { return best_texture_format_; } |
| size_t num_resources() const { return resources_.size(); } |
| // Checks whether a resource is in use by a consumer. |
| @@ -78,23 +85,23 @@ class CC_EXPORT ResourceProvider { |
| // Creates a resource of the default resource type. |
| ResourceId CreateResource(gfx::Size size, |
| - GLenum format, |
| GLint wrap_mode, |
| - TextureUsageHint hint); |
| + TextureUsageHint hint, |
| + TextureFormat texture_format); |
| // Creates a resource which is tagged as being managed for GPU memory |
| // accounting purposes. |
| ResourceId CreateManagedResource(gfx::Size size, |
| - GLenum format, |
| GLint wrap_mode, |
| - TextureUsageHint hint); |
| + TextureUsageHint hint, |
| + TextureFormat texture_format); |
| // You can also explicitly create a specific resource type. |
| ResourceId CreateGLTexture(gfx::Size size, |
| - GLenum format, |
| GLenum texture_pool, |
| GLint wrap_mode, |
| - TextureUsageHint hint); |
| + TextureUsageHint hint, |
| + TextureFormat texture_format); |
| ResourceId CreateBitmap(gfx::Size size); |
| // Wraps an external texture into a GL resource. |
| @@ -330,6 +337,9 @@ class CC_EXPORT ResourceProvider { |
| bool CanLockForWrite(ResourceId id); |
| static GLint GetActiveTextureUnit(WebKit::WebGraphicsContext3D* context); |
| + static size_t BytesPerPixel(TextureFormat type); |
| + static GLenum GetGLDataType(TextureFormat format); |
| + static GLenum GetGLDataFormat(TextureFormat format); |
| private: |
| struct Resource { |
| @@ -337,14 +347,13 @@ class CC_EXPORT ResourceProvider { |
| ~Resource(); |
| Resource(unsigned texture_id, |
| gfx::Size size, |
| - GLenum format, |
| GLenum filter, |
| GLenum texture_pool, |
| GLint wrap_mode, |
| - TextureUsageHint hint); |
| + TextureUsageHint hint, |
| + TextureFormat texture_format); |
| Resource(uint8_t* pixels, |
| gfx::Size size, |
| - GLenum format, |
| GLenum filter, |
| GLint wrap_mode); |
| @@ -368,7 +377,6 @@ class CC_EXPORT ResourceProvider { |
| bool enable_read_lock_fences; |
| scoped_refptr<Fence> read_lock_fence; |
| gfx::Size size; |
| - GLenum format; |
| // TODO(skyostil): Use a separate sampler object for filter state. |
| GLenum filter; |
| unsigned image_id; |
| @@ -376,6 +384,7 @@ class CC_EXPORT ResourceProvider { |
| GLint wrap_mode; |
| TextureUsageHint hint; |
| ResourceType type; |
| + TextureFormat texture_format; |
| }; |
| typedef base::hash_map<ResourceId, Resource> ResourceMap; |
| struct Child { |
| @@ -392,8 +401,8 @@ class CC_EXPORT ResourceProvider { |
| resource->read_lock_fence->HasPassed(); |
| } |
| - explicit ResourceProvider(OutputSurface* output_surface, |
| - int highp_threshold_min); |
| + ResourceProvider(OutputSurface* output_surface, |
| + int highp_threshold_min); |
| void CleanUpGLIfNeeded(); |
| @@ -444,7 +453,7 @@ class CC_EXPORT ResourceProvider { |
| bool use_shallow_flush_; |
| scoped_ptr<TextureUploader> texture_uploader_; |
| int max_texture_size_; |
| - GLenum best_texture_format_; |
| + TextureFormat best_texture_format_; |
| base::ThreadChecker thread_checker_; |