| Index: cc/resources/resource_provider.h
|
| diff --git a/cc/resources/resource_provider.h b/cc/resources/resource_provider.h
|
| index 88ff2749fd918d06a547a4b04892ef3b8633bc00..e73ea15589a1f190afdde90c2f5cd645558c8ae3 100644
|
| --- a/cc/resources/resource_provider.h
|
| +++ b/cc/resources/resource_provider.h
|
| @@ -19,6 +19,7 @@
|
| #include "cc/output/context_provider.h"
|
| #include "cc/output/output_surface.h"
|
| #include "cc/resources/release_callback.h"
|
| +#include "cc/resources/resource_format.h"
|
| #include "cc/resources/single_release_callback.h"
|
| #include "cc/resources/texture_mailbox.h"
|
| #include "cc/resources/transferable_resource.h"
|
| @@ -56,8 +57,8 @@ class CC_EXPORT ResourceProvider {
|
| };
|
|
|
| static scoped_ptr<ResourceProvider> Create(OutputSurface* output_surface,
|
| - int highp_threshold_min);
|
| -
|
| + int highp_threshold_min,
|
| + bool use_rgba_4444_texture_format);
|
| virtual ~ResourceProvider();
|
|
|
| void InitializeSoftware();
|
| @@ -66,7 +67,10 @@ 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_; }
|
| + ResourceFormat memory_efficient_texture_format() const {
|
| + return use_rgba_4444_texture_format_ ? RGBA_4444 : best_texture_format_;
|
| + }
|
| + ResourceFormat 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.
|
| @@ -80,23 +84,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,
|
| + ResourceFormat 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,
|
| + ResourceFormat 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,
|
| + ResourceFormat format);
|
|
|
| ResourceId CreateBitmap(gfx::Size size);
|
| // Wraps an external texture into a GL resource.
|
| @@ -334,6 +338,10 @@ class CC_EXPORT ResourceProvider {
|
| bool CanLockForWrite(ResourceId id);
|
|
|
| static GLint GetActiveTextureUnit(WebKit::WebGraphicsContext3D* context);
|
| + static size_t BytesPerPixel(ResourceFormat format);
|
| + static GLenum GetGLDataType(ResourceFormat format);
|
| + static GLenum GetGLDataFormat(ResourceFormat format);
|
| + static GLenum GetGLInternalFormat(ResourceFormat format);
|
|
|
| private:
|
| struct Resource {
|
| @@ -341,14 +349,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,
|
| + ResourceFormat format);
|
| Resource(uint8_t* pixels,
|
| gfx::Size size,
|
| - GLenum format,
|
| GLenum filter,
|
| GLint wrap_mode);
|
|
|
| @@ -373,7 +380,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 original_filter;
|
| GLenum filter;
|
| @@ -383,6 +389,7 @@ class CC_EXPORT ResourceProvider {
|
| GLint wrap_mode;
|
| TextureUsageHint hint;
|
| ResourceType type;
|
| + ResourceFormat format;
|
| };
|
| typedef base::hash_map<ResourceId, Resource> ResourceMap;
|
| struct Child {
|
| @@ -399,8 +406,9 @@ 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,
|
| + bool use_rgba_4444_texture_format);
|
|
|
| void CleanUpGLIfNeeded();
|
|
|
| @@ -451,11 +459,12 @@ class CC_EXPORT ResourceProvider {
|
| bool use_shallow_flush_;
|
| scoped_ptr<TextureUploader> texture_uploader_;
|
| int max_texture_size_;
|
| - GLenum best_texture_format_;
|
| + ResourceFormat best_texture_format_;
|
|
|
| base::ThreadChecker thread_checker_;
|
|
|
| scoped_refptr<Fence> current_read_lock_fence_;
|
| + bool use_rgba_4444_texture_format_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ResourceProvider);
|
| };
|
|
|