| Index: cc/output/output_surface.h
|
| diff --git a/cc/output/output_surface.h b/cc/output/output_surface.h
|
| deleted file mode 100644
|
| index 8994a6bffafbb2651874575d663061f6a1c2904d..0000000000000000000000000000000000000000
|
| --- a/cc/output/output_surface.h
|
| +++ /dev/null
|
| @@ -1,198 +0,0 @@
|
| -// Copyright 2012 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 CC_OUTPUT_OUTPUT_SURFACE_H_
|
| -#define CC_OUTPUT_OUTPUT_SURFACE_H_
|
| -
|
| -#include <deque>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "cc/output/context_provider.h"
|
| -#include "cc/output/overlay_candidate_validator.h"
|
| -#include "cc/output/software_output_device.h"
|
| -
|
| -namespace base { class SingleThreadTaskRunner; }
|
| -
|
| -namespace ui { struct LatencyInfo; }
|
| -
|
| -namespace gfx {
|
| -class Rect;
|
| -class Size;
|
| -class Transform;
|
| -}
|
| -
|
| -namespace cc {
|
| -
|
| -class CompositorFrame;
|
| -class CompositorFrameAck;
|
| -class OutputSurfaceClient;
|
| -
|
| -// Represents the output surface for a compositor. The compositor owns
|
| -// and manages its destruction. Its lifetime is:
|
| -// 1. Created on the main thread by the LayerTreeHost through its client.
|
| -// 2. Passed to the compositor thread and bound to a client via BindToClient.
|
| -// From here on, it will only be used on the compositor thread.
|
| -// 3. If the 3D context is lost, then the compositor will delete the output
|
| -// surface (on the compositor thread) and go back to step 1.
|
| -class OutputSurface {
|
| - public:
|
| - enum {
|
| - DEFAULT_MAX_FRAMES_PENDING = 2
|
| - };
|
| -
|
| - OutputSurface(const scoped_refptr<ContextProvider>& context_provider,
|
| - const scoped_refptr<ContextProvider>& worker_context_provider,
|
| - scoped_ptr<SoftwareOutputDevice> software_device);
|
| - OutputSurface(const scoped_refptr<ContextProvider>& context_provider,
|
| - const scoped_refptr<ContextProvider>& worker_context_provider);
|
| - explicit OutputSurface(
|
| - const scoped_refptr<ContextProvider>& context_provider);
|
| -
|
| - explicit OutputSurface(scoped_ptr<SoftwareOutputDevice> software_device);
|
| -
|
| - OutputSurface(const scoped_refptr<ContextProvider>& context_provider,
|
| - scoped_ptr<SoftwareOutputDevice> software_device);
|
| -
|
| - virtual ~OutputSurface();
|
| -
|
| - struct Capabilities {
|
| - Capabilities()
|
| - : delegated_rendering(false),
|
| - max_frames_pending(0),
|
| - deferred_gl_initialization(false),
|
| - draw_and_swap_full_viewport_every_frame(false),
|
| - adjust_deadline_for_parent(true),
|
| - uses_default_gl_framebuffer(true),
|
| - flipped_output_surface(false),
|
| - can_force_reclaim_resources(false) {}
|
| - bool delegated_rendering;
|
| - int max_frames_pending;
|
| - bool deferred_gl_initialization;
|
| - bool draw_and_swap_full_viewport_every_frame;
|
| - // This doesn't handle the <webview> case, but once BeginFrame is
|
| - // supported natively, we shouldn't need adjust_deadline_for_parent.
|
| - bool adjust_deadline_for_parent;
|
| - // Whether this output surface renders to the default OpenGL zero
|
| - // framebuffer or to an offscreen framebuffer.
|
| - bool uses_default_gl_framebuffer;
|
| - // Whether this OutputSurface is flipped or not.
|
| - bool flipped_output_surface;
|
| - // Whether ForceReclaimResources can be called to reclaim all resources
|
| - // from the OutputSurface.
|
| - bool can_force_reclaim_resources;
|
| - };
|
| -
|
| - const Capabilities& capabilities() const {
|
| - return capabilities_;
|
| - }
|
| -
|
| - virtual bool HasExternalStencilTest() const;
|
| -
|
| - // Obtain the 3d context or the software device associated with this output
|
| - // surface. Either of these may return a null pointer, but not both.
|
| - // In the event of a lost context, the entire output surface should be
|
| - // recreated.
|
| - ContextProvider* context_provider() const { return context_provider_.get(); }
|
| - ContextProvider* worker_context_provider() const {
|
| - return worker_context_provider_.get();
|
| - }
|
| - SoftwareOutputDevice* software_device() const {
|
| - return software_device_.get();
|
| - }
|
| -
|
| - // Called by the compositor on the compositor thread. This is a place where
|
| - // thread-specific data for the output surface can be initialized, since from
|
| - // this point on the output surface will only be used on the compositor
|
| - // thread.
|
| - virtual bool BindToClient(OutputSurfaceClient* client);
|
| -
|
| - // This is called by the compositor on the compositor thread inside ReleaseGL
|
| - // in order to release the ContextProvider. Only used with
|
| - // deferred_gl_initialization capability.
|
| - void ReleaseContextProvider();
|
| -
|
| - virtual void EnsureBackbuffer();
|
| - virtual void DiscardBackbuffer();
|
| -
|
| - virtual void Reshape(const gfx::Size& size, float scale_factor);
|
| - virtual gfx::Size SurfaceSize() const;
|
| -
|
| - // If supported, this causes a ReclaimResources for all resources that are
|
| - // currently in use.
|
| - virtual void ForceReclaimResources() {}
|
| -
|
| - virtual void BindFramebuffer();
|
| -
|
| - // The implementation may destroy or steal the contents of the CompositorFrame
|
| - // passed in (though it will not take ownership of the CompositorFrame
|
| - // itself). For successful swaps, the implementation must call
|
| - // OutputSurfaceClient::DidSwapBuffers() and eventually
|
| - // DidSwapBuffersComplete().
|
| - virtual void SwapBuffers(CompositorFrame* frame) = 0;
|
| - virtual void OnSwapBuffersComplete();
|
| -
|
| - // Notifies frame-rate smoothness preference. If true, all non-critical
|
| - // processing should be stopped, or lowered in priority.
|
| - virtual void UpdateSmoothnessTakesPriority(bool prefer_smoothness) {}
|
| -
|
| - bool HasClient() { return !!client_; }
|
| -
|
| - // Get the class capable of informing cc of hardware overlay capability.
|
| - OverlayCandidateValidator* overlay_candidate_validator() const {
|
| - return overlay_candidate_validator_.get();
|
| - }
|
| -
|
| - void DidLoseOutputSurface();
|
| -
|
| - protected:
|
| - OutputSurfaceClient* client_;
|
| -
|
| - // Synchronously initialize context3d and enter hardware mode.
|
| - // This can only supported in threaded compositing mode.
|
| - bool InitializeAndSetContext3d(
|
| - scoped_refptr<ContextProvider> context_provider,
|
| - scoped_refptr<ContextProvider> worker_context_provider);
|
| - void ReleaseGL();
|
| -
|
| - void PostSwapBuffersComplete();
|
| -
|
| - struct OutputSurface::Capabilities capabilities_;
|
| - scoped_refptr<ContextProvider> context_provider_;
|
| - scoped_refptr<ContextProvider> worker_context_provider_;
|
| - scoped_ptr<SoftwareOutputDevice> software_device_;
|
| - scoped_ptr<OverlayCandidateValidator> overlay_candidate_validator_;
|
| - gfx::Size surface_size_;
|
| - float device_scale_factor_;
|
| -
|
| - void CommitVSyncParameters(base::TimeTicks timebase,
|
| - base::TimeDelta interval);
|
| -
|
| - void SetNeedsRedrawRect(const gfx::Rect& damage_rect);
|
| - void ReclaimResources(const CompositorFrameAck* ack);
|
| - void SetExternalStencilTest(bool enabled);
|
| - void SetExternalDrawConstraints(
|
| - const gfx::Transform& transform,
|
| - const gfx::Rect& viewport,
|
| - const gfx::Rect& clip,
|
| - const gfx::Rect& viewport_rect_for_tile_priority,
|
| - const gfx::Transform& transform_for_tile_priority,
|
| - bool resourceless_software_draw);
|
| -
|
| - private:
|
| - void SetUpContext3d();
|
| - void ResetContext3d();
|
| -
|
| - bool external_stencil_test_enabled_;
|
| -
|
| - base::WeakPtrFactory<OutputSurface> weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(OutputSurface);
|
| -};
|
| -
|
| -} // namespace cc
|
| -
|
| -#endif // CC_OUTPUT_OUTPUT_SURFACE_H_
|
|
|