1 // Copyright 2013 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 GPU_COMMAND_BUFFER_CLIENT_CONTEXT_SUPPORT_H_ 6 #define GPU_COMMAND_BUFFER_CLIENT_CONTEXT_SUPPORT_H_ 7 8 #include "base/callback.h" 9 #include "ui/gfx/overlay_transform.h" 10 #include "ui/gfx/rect.h" 11 12 namespace gpu { 13 14 class ContextSupport { 15 public: 16 // Runs |callback| when a sync point is reached. 17 virtual void SignalSyncPoint(uint32 sync_point, 18 const base::Closure& callback) = 0; 19 20 // Runs |callback| when a query created via glCreateQueryEXT() has cleared 21 // passed the glEndQueryEXT() point. 22 virtual void SignalQuery(uint32 query, const base::Closure& callback) = 0; 23 24 // For onscreen contexts, indicates that the surface visibility has changed. 25 // Clients aren't expected to draw to an invisible surface. 26 virtual void SetSurfaceVisible(bool visible) = 0; 27 28 virtual void Swap() = 0; 29 virtual void PartialSwapBuffers(const gfx::Rect& sub_buffer) = 0; 30 31 virtual void SetSwapBuffersCompleteCallback( 32 const base::Closure& callback) = 0; 33 34 // Schedule a texture to be presented as an overlay synchronously with the 35 // primary surface during the next buffer swap. 36 // This method is not stateful and needs to be re-scheduled every frame. 37 virtual void ScheduleOverlayPlane(int plane_z_order, 38 gfx::OverlayTransform plane_transform, 39 unsigned overlay_texture_id, 40 const gfx::Rect& display_bounds, 41 const gfx::RectF& uv_rect) = 0; 42 43 protected: ContextSupport()44 ContextSupport() {} ~ContextSupport()45 virtual ~ContextSupport() {} 46 }; 47 48 } 49 50 #endif // GPU_COMMAND_BUFFER_CLIENT_CONTEXT_SUPPORT_H_ 51