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 <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 public: | 281 public: |
282 ScopedWriteLockGL(ResourceProvider* resource_provider, | 282 ScopedWriteLockGL(ResourceProvider* resource_provider, |
283 ResourceId resource_id, | 283 ResourceId resource_id, |
284 bool create_mailbox); | 284 bool create_mailbox); |
285 ~ScopedWriteLockGL(); | 285 ~ScopedWriteLockGL(); |
286 | 286 |
287 unsigned texture_id() const { return texture_id_; } | 287 unsigned texture_id() const { return texture_id_; } |
288 GLenum target() const { return target_; } | 288 GLenum target() const { return target_; } |
289 ResourceFormat format() const { return format_; } | 289 ResourceFormat format() const { return format_; } |
290 const gfx::Size& size() const { return size_; } | 290 const gfx::Size& size() const { return size_; } |
291 sk_sp<SkColorSpace> sk_color_space() const { return sk_color_space_; } | |
292 | 291 |
293 const TextureMailbox& mailbox() const { return mailbox_; } | 292 const TextureMailbox& mailbox() const { return mailbox_; } |
294 | 293 |
295 void set_sync_token(const gpu::SyncToken& sync_token) { | 294 void set_sync_token(const gpu::SyncToken& sync_token) { |
296 sync_token_ = sync_token; | 295 sync_token_ = sync_token; |
297 has_sync_token_ = true; | 296 has_sync_token_ = true; |
298 } | 297 } |
299 | 298 |
300 void set_synchronized(bool synchronized) { synchronized_ = synchronized; } | 299 void set_synchronized(bool synchronized) { synchronized_ = synchronized; } |
301 | 300 |
302 private: | 301 private: |
303 ResourceProvider* resource_provider_; | 302 ResourceProvider* resource_provider_; |
304 ResourceId resource_id_; | 303 ResourceId resource_id_; |
305 unsigned texture_id_; | 304 unsigned texture_id_; |
306 GLenum target_; | 305 GLenum target_; |
307 ResourceFormat format_; | 306 ResourceFormat format_; |
308 gfx::Size size_; | 307 gfx::Size size_; |
309 TextureMailbox mailbox_; | 308 TextureMailbox mailbox_; |
310 gpu::SyncToken sync_token_; | 309 gpu::SyncToken sync_token_; |
311 bool has_sync_token_; | 310 bool has_sync_token_; |
312 bool synchronized_; | 311 bool synchronized_; |
313 base::ThreadChecker thread_checker_; | 312 base::ThreadChecker thread_checker_; |
314 sk_sp<SkColorSpace> sk_color_space_; | |
315 | 313 |
316 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGL); | 314 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGL); |
317 }; | 315 }; |
318 | 316 |
319 class CC_EXPORT ScopedTextureProvider { | 317 class CC_EXPORT ScopedTextureProvider { |
320 public: | 318 public: |
321 ScopedTextureProvider(gpu::gles2::GLES2Interface* gl, | 319 ScopedTextureProvider(gpu::gles2::GLES2Interface* gl, |
322 ScopedWriteLockGL* resource_lock, | 320 ScopedWriteLockGL* resource_lock, |
323 bool use_mailbox); | 321 bool use_mailbox); |
324 ~ScopedTextureProvider(); | 322 ~ScopedTextureProvider(); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 }; | 390 }; |
393 | 391 |
394 class CC_EXPORT ScopedWriteLockSoftware { | 392 class CC_EXPORT ScopedWriteLockSoftware { |
395 public: | 393 public: |
396 ScopedWriteLockSoftware(ResourceProvider* resource_provider, | 394 ScopedWriteLockSoftware(ResourceProvider* resource_provider, |
397 ResourceId resource_id); | 395 ResourceId resource_id); |
398 ~ScopedWriteLockSoftware(); | 396 ~ScopedWriteLockSoftware(); |
399 | 397 |
400 SkBitmap& sk_bitmap() { return sk_bitmap_; } | 398 SkBitmap& sk_bitmap() { return sk_bitmap_; } |
401 bool valid() const { return !!sk_bitmap_.getPixels(); } | 399 bool valid() const { return !!sk_bitmap_.getPixels(); } |
402 sk_sp<SkColorSpace> sk_color_space() const { return sk_color_space_; } | |
403 | 400 |
404 private: | 401 private: |
405 ResourceProvider* resource_provider_; | 402 ResourceProvider* resource_provider_; |
406 ResourceId resource_id_; | 403 ResourceId resource_id_; |
407 SkBitmap sk_bitmap_; | 404 SkBitmap sk_bitmap_; |
408 sk_sp<SkColorSpace> sk_color_space_; | |
409 base::ThreadChecker thread_checker_; | 405 base::ThreadChecker thread_checker_; |
410 | 406 |
411 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockSoftware); | 407 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockSoftware); |
412 }; | 408 }; |
413 | 409 |
414 class CC_EXPORT ScopedWriteLockGpuMemoryBuffer { | 410 class CC_EXPORT ScopedWriteLockGpuMemoryBuffer { |
415 public: | 411 public: |
416 ScopedWriteLockGpuMemoryBuffer(ResourceProvider* resource_provider, | 412 ScopedWriteLockGpuMemoryBuffer(ResourceProvider* resource_provider, |
417 ResourceId resource_id); | 413 ResourceId resource_id); |
418 ~ScopedWriteLockGpuMemoryBuffer(); | 414 ~ScopedWriteLockGpuMemoryBuffer(); |
419 gfx::GpuMemoryBuffer* GetGpuMemoryBuffer(); | 415 gfx::GpuMemoryBuffer* GetGpuMemoryBuffer(); |
420 sk_sp<SkColorSpace> sk_color_space() const { return sk_color_space_; } | |
421 | 416 |
422 private: | 417 private: |
423 ResourceProvider* resource_provider_; | 418 ResourceProvider* resource_provider_; |
424 ResourceId resource_id_; | 419 ResourceId resource_id_; |
425 ResourceFormat format_; | 420 ResourceFormat format_; |
426 gfx::BufferUsage usage_; | 421 gfx::BufferUsage usage_; |
427 gfx::Size size_; | 422 gfx::Size size_; |
428 std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_; | 423 std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_; |
429 sk_sp<SkColorSpace> sk_color_space_; | |
430 base::ThreadChecker thread_checker_; | 424 base::ThreadChecker thread_checker_; |
431 | 425 |
432 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBuffer); | 426 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBuffer); |
433 }; | 427 }; |
434 | 428 |
435 class Fence : public base::RefCounted<Fence> { | 429 class Fence : public base::RefCounted<Fence> { |
436 public: | 430 public: |
437 Fence() {} | 431 Fence() {} |
438 | 432 |
439 virtual void Set() = 0; | 433 virtual void Set() = 0; |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 void BindImageForSampling(Resource* resource); | 710 void BindImageForSampling(Resource* resource); |
717 // Binds the given GL resource to a texture target for sampling using the | 711 // Binds the given GL resource to a texture target for sampling using the |
718 // specified filter for both minification and magnification. Returns the | 712 // specified filter for both minification and magnification. Returns the |
719 // texture target used. The resource must be locked for reading. | 713 // texture target used. The resource must be locked for reading. |
720 GLenum BindForSampling(ResourceId resource_id, GLenum unit, GLenum filter); | 714 GLenum BindForSampling(ResourceId resource_id, GLenum unit, GLenum filter); |
721 | 715 |
722 // Returns null if we do not have a ContextProvider. | 716 // Returns null if we do not have a ContextProvider. |
723 gpu::gles2::GLES2Interface* ContextGL() const; | 717 gpu::gles2::GLES2Interface* ContextGL() const; |
724 bool IsGLContextLost() const; | 718 bool IsGLContextLost() const; |
725 | 719 |
726 // Returns null if |settings_.enable_color_correct_rasterization| is false. | |
727 sk_sp<SkColorSpace> GetResourceSkColorSpace(const Resource* resource) const; | |
728 | |
729 // Holds const settings for the ResourceProvider. Never changed after init. | 720 // Holds const settings for the ResourceProvider. Never changed after init. |
730 struct Settings { | 721 struct Settings { |
731 Settings(ContextProvider* compositor_context_provider, | 722 Settings(ContextProvider* compositor_context_provider, |
732 bool delegated_sync_points_required, | 723 bool delegated_sync_points_required, |
733 bool use_gpu_memory_buffer_resources, | 724 bool use_gpu_memory_buffer_resources, |
734 bool enable_color_correct_rasterization); | 725 bool enable_color_correct_rasterization); |
735 | 726 |
736 int max_texture_size = 0; | 727 int max_texture_size = 0; |
737 bool use_texture_storage_ext = false; | 728 bool use_texture_storage_ext = false; |
738 bool use_texture_format_bgra = false; | 729 bool use_texture_format_bgra = false; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 // Set of resource Ids that would like to be notified about promotion hints. | 762 // Set of resource Ids that would like to be notified about promotion hints. |
772 ResourceIdSet wants_promotion_hints_set_; | 763 ResourceIdSet wants_promotion_hints_set_; |
773 #endif | 764 #endif |
774 | 765 |
775 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); | 766 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); |
776 }; | 767 }; |
777 | 768 |
778 } // namespace cc | 769 } // namespace cc |
779 | 770 |
780 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ | 771 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ |
OLD | NEW |