15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CONTENT_BROWSER_COMPOSITOR_GPU_BROWSER_COMPOSITOR_OUTPUT_SURFACE_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CONTENT_BROWSER_COMPOSITOR_GPU_BROWSER_COMPOSITOR_OUTPUT_SURFACE_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/browser/compositor/browser_compositor_output_surface.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ui { 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class CompositorVSyncManager; 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace cc { 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass OverlayCandidateValidator; 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace content { 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Adapts a WebGraphicsContext3DCommandBufferImpl into a 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// cc::OutputSurface that also handles vsync parameter updates 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// arriving from the GPU process. 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class GpuBrowserCompositorOutputSurface 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : public BrowserCompositorOutputSurface { 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GpuBrowserCompositorOutputSurface( 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const scoped_refptr<ContextProviderCommandBuffer>& context, 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int surface_id, 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) IDMap<BrowserCompositorOutputSurface>* output_surface_map, 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager, 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<cc::OverlayCandidateValidator> overlay_candidate_validator); 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ~GpuBrowserCompositorOutputSurface(); 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci protected: 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // cc::OutputSurface implementation. 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void SwapBuffers(cc::CompositorFrame* frame) OVERRIDE; 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GpuBrowserCompositorOutputSurface); 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace content 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CONTENT_BROWSER_COMPOSITOR_GPU_BROWSER_COMPOSITOR_OUTPUT_SURFACE_H_ 45