Chromium Code Reviews| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 45 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; | 45 typedef base::hash_map<ResourceId, ResourceId> ResourceIdMap; |
| 46 enum TextureUsageHint { | 46 enum TextureUsageHint { |
| 47 TextureUsageAny, | 47 TextureUsageAny, |
| 48 TextureUsageFramebuffer, | 48 TextureUsageFramebuffer, |
| 49 }; | 49 }; |
| 50 enum ResourceType { | 50 enum ResourceType { |
| 51 InvalidType = 0, | 51 InvalidType = 0, |
| 52 GLTexture = 1, | 52 GLTexture = 1, |
| 53 Bitmap, | 53 Bitmap, |
| 54 }; | 54 }; |
| 55 enum TextureType { | |
|
epennerAtGoogle
2013/09/06 03:24:44
I'm interested in what others think here, but I wa
reveman
2013/09/06 03:47:15
Maybe OK to just use the internal formats defined
| |
| 56 RGBA_8888, | |
| 57 RGBA_4444, | |
|
epennerAtGoogle
2013/09/06 03:24:44
Do we need BGRA_8888 also? The idea to use this en
| |
| 58 }; | |
| 55 | 59 |
| 56 static scoped_ptr<ResourceProvider> Create(OutputSurface* output_surface, | 60 static scoped_ptr<ResourceProvider> Create(OutputSurface* output_surface, |
| 57 int highp_threshold_min); | 61 int highp_threshold_min, |
| 62 bool use_rgba_4444_textures); | |
|
epennerAtGoogle
2013/09/06 03:24:44
How about TextureType best_texture_type, and no bo
| |
| 58 | 63 |
| 59 virtual ~ResourceProvider(); | 64 virtual ~ResourceProvider(); |
| 60 | 65 |
| 61 void InitializeSoftware(); | 66 void InitializeSoftware(); |
| 62 bool InitializeGL(); | 67 bool InitializeGL(); |
| 63 | 68 |
| 64 void DidLoseOutputSurface() { lost_output_surface_ = true; } | 69 void DidLoseOutputSurface() { lost_output_surface_ = true; } |
| 65 | 70 |
| 66 int max_texture_size() const { return max_texture_size_; } | 71 int max_texture_size() const { return max_texture_size_; } |
| 67 GLenum best_texture_format() const { return best_texture_format_; } | 72 GLenum best_texture_format() const { return best_texture_format_; } |
|
epennerAtGoogle
2013/09/06 03:24:44
I was hoping we could get rid of the GLenum comple
| |
| 73 TextureType best_texture_type() const { return best_texture_type_; } | |
| 68 size_t num_resources() const { return resources_.size(); } | 74 size_t num_resources() const { return resources_.size(); } |
| 69 | 75 |
| 70 // Checks whether a resource is in use by a consumer. | 76 // Checks whether a resource is in use by a consumer. |
| 71 bool InUseByConsumer(ResourceId id); | 77 bool InUseByConsumer(ResourceId id); |
| 72 | 78 |
| 73 | 79 |
| 74 // Producer interface. | 80 // Producer interface. |
| 75 | 81 |
| 76 ResourceType default_resource_type() const { return default_resource_type_; } | 82 ResourceType default_resource_type() const { return default_resource_type_; } |
| 77 ResourceType GetResourceType(ResourceId id); | 83 ResourceType GetResourceType(ResourceId id); |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 374 ResourceIdMap child_to_parent_map; | 380 ResourceIdMap child_to_parent_map; |
| 375 ResourceIdMap parent_to_child_map; | 381 ResourceIdMap parent_to_child_map; |
| 376 }; | 382 }; |
| 377 typedef base::hash_map<int, Child> ChildMap; | 383 typedef base::hash_map<int, Child> ChildMap; |
| 378 | 384 |
| 379 bool ReadLockFenceHasPassed(Resource* resource) { | 385 bool ReadLockFenceHasPassed(Resource* resource) { |
| 380 return !resource->read_lock_fence.get() || | 386 return !resource->read_lock_fence.get() || |
| 381 resource->read_lock_fence->HasPassed(); | 387 resource->read_lock_fence->HasPassed(); |
| 382 } | 388 } |
| 383 | 389 |
| 384 explicit ResourceProvider(OutputSurface* output_surface, | 390 ResourceProvider(OutputSurface* output_surface, |
| 385 int highp_threshold_min); | 391 int highp_threshold_min, |
| 392 bool use_rgba_4444_textures); | |
| 386 | 393 |
| 387 void CleanUpGLIfNeeded(); | 394 void CleanUpGLIfNeeded(); |
| 388 | 395 |
| 389 Resource* GetResource(ResourceId id); | 396 Resource* GetResource(ResourceId id); |
| 390 const Resource* LockForRead(ResourceId id); | 397 const Resource* LockForRead(ResourceId id); |
| 391 void UnlockForRead(ResourceId id); | 398 void UnlockForRead(ResourceId id); |
| 392 const Resource* LockForWrite(ResourceId id); | 399 const Resource* LockForWrite(ResourceId id); |
| 393 void UnlockForWrite(ResourceId id); | 400 void UnlockForWrite(ResourceId id); |
| 394 static void PopulateSkBitmapWithResource(SkBitmap* sk_bitmap, | 401 static void PopulateSkBitmapWithResource(SkBitmap* sk_bitmap, |
| 395 const Resource* resource); | 402 const Resource* resource); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 427 int next_child_; | 434 int next_child_; |
| 428 ChildMap children_; | 435 ChildMap children_; |
| 429 | 436 |
| 430 ResourceType default_resource_type_; | 437 ResourceType default_resource_type_; |
| 431 bool use_texture_storage_ext_; | 438 bool use_texture_storage_ext_; |
| 432 bool use_texture_usage_hint_; | 439 bool use_texture_usage_hint_; |
| 433 bool use_shallow_flush_; | 440 bool use_shallow_flush_; |
| 434 scoped_ptr<TextureUploader> texture_uploader_; | 441 scoped_ptr<TextureUploader> texture_uploader_; |
| 435 int max_texture_size_; | 442 int max_texture_size_; |
| 436 GLenum best_texture_format_; | 443 GLenum best_texture_format_; |
| 444 TextureType best_texture_type_; | |
| 437 | 445 |
| 438 base::ThreadChecker thread_checker_; | 446 base::ThreadChecker thread_checker_; |
| 439 | 447 |
| 440 scoped_refptr<Fence> current_read_lock_fence_; | 448 scoped_refptr<Fence> current_read_lock_fence_; |
| 441 | 449 |
| 442 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); | 450 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); |
| 443 }; | 451 }; |
| 444 | 452 |
| 445 } // namespace cc | 453 } // namespace cc |
| 446 | 454 |
| 447 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ | 455 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ |
| OLD | NEW |