1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef CC_SURFACES_DISPLAY_H_ 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define CC_SURFACES_DISPLAY_H_ 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "cc/output/output_surface_client.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "cc/output/renderer.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "cc/surfaces/surface_aggregator.h" 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "cc/surfaces/surface_client.h" 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "cc/surfaces/surface_id.h" 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "cc/surfaces/surfaces_export.h" 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace gfx { 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Size; 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace cc { 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DirectRenderer; 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DisplayClient; 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class OutputSurface; 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ResourceProvider; 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class SharedBitmapManager; 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Surface; 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class SurfaceManager; 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class CC_SURFACES_EXPORT Display : public SurfaceClient, 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public OutputSurfaceClient, 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public RendererClient { 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) Display(DisplayClient* client, 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SurfaceManager* manager, 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SharedBitmapManager* bitmap_manager); 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~Display(); 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void Resize(const gfx::Size& new_size); 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool Draw(); 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SurfaceId CurrentSurfaceId(); 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // OutputSurfaceClient implementation. 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void DeferredInitialize() OVERRIDE {} 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void ReleaseGL() OVERRIDE {} 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void CommitVSyncParameters(base::TimeTicks timebase, 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::TimeDelta interval) OVERRIDE {} 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void SetNeedsRedrawRect(const gfx::Rect& damage_rect) OVERRIDE {} 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void BeginFrame(const BeginFrameArgs& args) OVERRIDE {} 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void DidSwapBuffers() OVERRIDE {} 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void DidSwapBuffersComplete() OVERRIDE {} 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void ReclaimResources(const CompositorFrameAck* ack) OVERRIDE {} 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void DidLoseOutputSurface() OVERRIDE {} 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void SetExternalDrawConstraints( 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const gfx::Transform& transform, 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const gfx::Rect& viewport, 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const gfx::Rect& clip, 60f4933c2d2f8300a84cd1cd69e0ecb40f3b807f06Hui Shu const gfx::Rect& viewport_rect_for_tile_priority, 61f4933c2d2f8300a84cd1cd69e0ecb40f3b807f06Hui Shu const gfx::Transform& transform_for_tile_priority, 6288109bffdff235e691fea3aefa461782a195ed10boliu@chromium.org bool resourceless_software_draw) OVERRIDE {} 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) OVERRIDE {} 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void SetTreeActivationCallback( 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const base::Closure& callback) OVERRIDE {} 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // RendererClient implementation. 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void SetFullRootLayerDamage() OVERRIDE {} 69bee9932bab44713b74b422b4b759b49f5a222977Bo Liu virtual void RunOnDemandRasterTask(Task* on_demand_raster_task) OVERRIDE {} 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // SurfaceClient implementation. 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void ReturnResources(const ReturnedResourceArray& resources) OVERRIDE; 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void InitializeOutputSurface(); 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DisplayClient* client_; 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SurfaceManager* manager_; 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SurfaceAggregator aggregator_; 8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SharedBitmapManager* bitmap_manager_; 81f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) LayerTreeSettings settings_; 82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<Surface> current_surface_; 83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<OutputSurface> output_surface_; 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<ResourceProvider> resource_provider_; 85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<DirectRenderer> renderer_; 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) int child_id_; 87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Display); 89cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 90cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace cc 92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 93f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif // CC_SURFACES_DISPLAY_H_ 94