delegating_renderer.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 2926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef CC_OUTPUT_DELEGATING_RENDERER_H_ 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CC_OUTPUT_DELEGATING_RENDERER_H_ 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "cc/base/cc_export.h" 1002772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch#include "cc/output/compositor_frame.h" 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "cc/output/renderer.h" 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdochnamespace cc { 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class OutputSurface; 1602772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdochclass ResourceProvider; 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class CC_EXPORT DelegatingRenderer : public Renderer { 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) public: 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static scoped_ptr<DelegatingRenderer> Create( 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RendererClient* client, 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const LayerTreeSettings* settings, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) OutputSurface* output_surface, 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ResourceProvider* resource_provider); 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~DelegatingRenderer(); 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual const RendererCapabilitiesImpl& Capabilities() const OVERRIDE; 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual bool CanReadPixels() const OVERRIDE; 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void DrawFrame(RenderPassList* render_passes_in_draw_order, 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ContextProvider* offscreen_context_provider, 33a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) float device_scale_factor, 34f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu const gfx::Rect& device_viewport_rect, 35f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) const gfx::Rect& device_clip_rect, 3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) bool disable_picture_quad_image_filtering) OVERRIDE; 377757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 387757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch virtual void Finish() OVERRIDE {} 397757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 407757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch virtual void SwapBuffers(const CompositorFrameMetadata& metadata) OVERRIDE; 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void ReceiveSwapBuffersAck(const CompositorFrameAck&) OVERRIDE; 42c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void GetFramebufferPixels(void* pixels, 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const gfx::Rect& rect) OVERRIDE; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual bool IsContextLost() OVERRIDE; 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void SetVisible(bool visible) OVERRIDE; 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void SendManagedMemoryStats(size_t bytes_visible, 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size_t bytes_visible_and_nearby, 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size_t bytes_allocated) OVERRIDE; 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) private: 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DelegatingRenderer(RendererClient* client, 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const LayerTreeSettings* settings, 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) OutputSurface* output_surface, 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ResourceProvider* resource_provider); 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool Initialize(); 60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) OutputSurface* output_surface_; 62926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ResourceProvider* resource_provider_; 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) RendererCapabilitiesImpl capabilities_; 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scoped_ptr<DelegatedFrameData> delegated_frame_data_; 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool visible_; 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DelegatingRenderer); 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace cc 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#endif // CC_OUTPUT_DELEGATING_RENDERER_H_ 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)