Home | History | Annotate | Download | only in output
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CC_OUTPUT_DELEGATING_RENDERER_H_
      6 #define CC_OUTPUT_DELEGATING_RENDERER_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 #include "cc/base/cc_export.h"
     10 #include "cc/output/compositor_frame.h"
     11 #include "cc/output/renderer.h"
     12 
     13 namespace cc {
     14 
     15 class OutputSurface;
     16 class ResourceProvider;
     17 
     18 class CC_EXPORT DelegatingRenderer : public Renderer {
     19  public:
     20   static scoped_ptr<DelegatingRenderer> Create(
     21       RendererClient* client,
     22       const LayerTreeSettings* settings,
     23       OutputSurface* output_surface,
     24       ResourceProvider* resource_provider);
     25   virtual ~DelegatingRenderer();
     26 
     27   virtual const RendererCapabilitiesImpl& Capabilities() const OVERRIDE;
     28 
     29   virtual void DrawFrame(RenderPassList* render_passes_in_draw_order,
     30                          float device_scale_factor,
     31                          const gfx::Rect& device_viewport_rect,
     32                          const gfx::Rect& device_clip_rect,
     33                          bool disable_picture_quad_image_filtering) OVERRIDE;
     34 
     35   virtual void Finish() OVERRIDE {}
     36 
     37   virtual void SwapBuffers(const CompositorFrameMetadata& metadata) OVERRIDE;
     38   virtual void ReceiveSwapBuffersAck(const CompositorFrameAck&) OVERRIDE;
     39 
     40  private:
     41   DelegatingRenderer(RendererClient* client,
     42                      const LayerTreeSettings* settings,
     43                      OutputSurface* output_surface,
     44                      ResourceProvider* resource_provider);
     45 
     46   virtual void DidChangeVisibility() OVERRIDE;
     47 
     48   OutputSurface* output_surface_;
     49   ResourceProvider* resource_provider_;
     50   RendererCapabilitiesImpl capabilities_;
     51   scoped_ptr<DelegatedFrameData> delegated_frame_data_;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(DelegatingRenderer);
     54 };
     55 
     56 }  // namespace cc
     57 
     58 #endif  // CC_OUTPUT_DELEGATING_RENDERER_H_
     59