Chromium Code Reviews| Index: components/mus/surfaces/buffer_queue.h |
| diff --git a/content/browser/compositor/buffer_queue.h b/components/mus/surfaces/buffer_queue.h |
| similarity index 72% |
| copy from content/browser/compositor/buffer_queue.h |
| copy to components/mus/surfaces/buffer_queue.h |
| index 772501c52a508f1d98aedb71ad19bc24792b5a6c..878aede5e827107e72db62d0a28358d138db13f1 100644 |
| --- a/content/browser/compositor/buffer_queue.h |
| +++ b/components/mus/surfaces/buffer_queue.h |
| @@ -1,9 +1,9 @@ |
| -// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef CONTENT_BROWSER_COMPOSITOR_BUFFER_QUEUE_H_ |
| -#define CONTENT_BROWSER_COMPOSITOR_BUFFER_QUEUE_H_ |
| +#ifndef COMPONENTS_MUS_SURFACES_BUFFER_QUEUE_H_ |
| +#define COMPONENTS_MUS_SURFACES_BUFFER_QUEUE_H_ |
| #include <stddef.h> |
| @@ -13,9 +13,11 @@ |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| -#include "content/common/content_export.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "gpu/command_buffer/client/gles2_interface.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/geometry/size.h" |
| +#include "ui/gfx/native_widget_types.h" |
| namespace cc { |
| class ContextProvider; |
| @@ -25,26 +27,23 @@ namespace gfx { |
| class GpuMemoryBuffer; |
| } |
| -namespace gpu { |
| -class GpuMemoryBufferManager; |
| -} |
| +class SkRegion; |
| -namespace content { |
| +namespace mus { |
| +class MojoGpuMemoryBufferManager; |
| class GLHelper; |
| // Provides a surface that manages its own buffers, backed by GpuMemoryBuffers |
| // created using CHROMIUM_gpu_memory_buffer_image. Double/triple buffering is |
| // implemented internally. Doublebuffering occurs if PageFlipComplete is called |
| // before the next BindFramebuffer call, otherwise it creates extra buffers. |
| -class CONTENT_EXPORT BufferQueue { |
| +class BufferQueue { |
| public: |
| BufferQueue(scoped_refptr<cc::ContextProvider> context_provider, |
| - unsigned int texture_target, |
| - unsigned int internalformat, |
| - GLHelper* gl_helper, |
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, |
| - int surface_id); |
| + uint32_t texture_target, |
| + uint32_t internalformat, |
| + gfx::AcceleratedWidget widget); |
| virtual ~BufferQueue(); |
| void Initialize(); |
| @@ -62,18 +61,17 @@ class CONTENT_EXPORT BufferQueue { |
| unsigned int fbo() const { return fbo_; } |
| private: |
| - friend class BufferQueueTest; |
| friend class AllocatedSurface; |
| - struct CONTENT_EXPORT AllocatedSurface { |
| + struct AllocatedSurface { |
| AllocatedSurface(BufferQueue* buffer_queue, |
| - std::unique_ptr<gfx::GpuMemoryBuffer> buffer, |
| + scoped_ptr<gfx::GpuMemoryBuffer> buffer, |
| unsigned int texture, |
| unsigned int image, |
| const gfx::Rect& rect); |
| ~AllocatedSurface(); |
| BufferQueue* const buffer_queue; |
| - std::unique_ptr<gfx::GpuMemoryBuffer> buffer; |
| + scoped_ptr<gfx::GpuMemoryBuffer> buffer; |
|
Fady Samuel
2016/04/12 02:54:41
nit: std::unique_ptr.
rjkroege
2016/04/12 19:27:54
Done.
|
| const unsigned int texture; |
| const unsigned int image; |
| gfx::Rect damage; // This is the damage for this frame from the previous. |
| @@ -92,14 +90,21 @@ class CONTENT_EXPORT BufferQueue { |
| void UpdateBufferDamage(const gfx::Rect& damage); |
| + void CopySubBufferDamage(GLenum target, |
| + GLuint texture, |
| + GLuint previous_texture, |
| + const SkRegion& new_damage, |
| + const SkRegion& old_damage); |
| + |
| // Return a surface, available to be drawn into. |
| - std::unique_ptr<AllocatedSurface> GetNextSurface(); |
| + scoped_ptr<AllocatedSurface> GetNextSurface(); |
|
Fady Samuel
2016/04/12 02:54:41
nit: std::unique_ptr.
rjkroege
2016/04/12 19:27:54
Done.
|
| - std::unique_ptr<AllocatedSurface> RecreateBuffer( |
| - std::unique_ptr<AllocatedSurface> surface); |
| + scoped_ptr<AllocatedSurface> RecreateBuffer( |
|
Fady Samuel
2016/04/12 02:54:41
nit: std::unique_ptr.
rjkroege
2016/04/12 19:27:54
Done.
|
| + scoped_ptr<AllocatedSurface> surface); |
|
Fady Samuel
2016/04/12 02:54:41
nit: std::unique_ptr.
rjkroege
2016/04/12 19:27:54
Done.
|
| gfx::Size size_; |
| scoped_refptr<cc::ContextProvider> context_provider_; |
| + |
| unsigned int fbo_; |
| size_t allocated_count_; |
| unsigned int texture_target_; |
| @@ -114,13 +119,11 @@ class CONTENT_EXPORT BufferQueue { |
| // These have been swapped but are not displayed yet. Entries of this deque |
| // may be nullptr, if they represent frames that have been destroyed. |
| std::deque<std::unique_ptr<AllocatedSurface>> in_flight_surfaces_; |
| - GLHelper* gl_helper_; |
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_; |
| - int surface_id_; |
| + gfx::AcceleratedWidget widget_; |
| DISALLOW_COPY_AND_ASSIGN(BufferQueue); |
| }; |
| -} // namespace content |
| +} // namespace mus |
| -#endif // CONTENT_BROWSER_COMPOSITOR_BUFFER_QUEUE_H_ |
| +#endif // COMPONENTS_MUS_SURFACES_BUFFER_QUEUE_H_ |