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 13namespace cc { 14 15class OutputSurface; 16class ResourceProvider; 17 18class 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