delegating_renderer.h revision 6d86b77056ed63eb6871182f42a9fd5f07550f90
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 virtual bool IsContextLost() OVERRIDE; 41 42 private: 43 DelegatingRenderer(RendererClient* client, 44 const LayerTreeSettings* settings, 45 OutputSurface* output_surface, 46 ResourceProvider* resource_provider); 47 48 virtual void DidChangeVisibility() OVERRIDE; 49 50 OutputSurface* output_surface_; 51 ResourceProvider* resource_provider_; 52 RendererCapabilitiesImpl capabilities_; 53 scoped_ptr<DelegatedFrameData> delegated_frame_data_; 54 55 DISALLOW_COPY_AND_ASSIGN(DelegatingRenderer); 56}; 57 58} // namespace cc 59 60#endif // CC_OUTPUT_DELEGATING_RENDERER_H_ 61