Index: cc/output/gl_renderer.h |
diff --git a/cc/output/gl_renderer.h b/cc/output/gl_renderer.h |
index 75a5d6e720e76572268f2a7b5e32570c24647d83..3d8a4a61601cd242feb1cc2630513551bbf7c122 100644 |
--- a/cc/output/gl_renderer.h |
+++ b/cc/output/gl_renderer.h |
@@ -40,6 +40,7 @@ class StreamVideoDrawQuad; |
class TextureDrawQuad; |
class TextureMailboxDeleter; |
class GeometryBinding; |
+class GeometryBindingQuad; |
class ScopedEnsureFramebufferAllocation; |
// Class that handles drawing of composited render layers using GL. |
@@ -111,7 +112,9 @@ class CC_EXPORT GLRenderer : public DirectRenderer { |
bool draw_rect_covers_full_surface) OVERRIDE; |
virtual void ClearFramebuffer(DrawingFrame* frame, |
bool has_external_stencil_test) OVERRIDE; |
- virtual void DoDrawQuad(DrawingFrame* frame, const class DrawQuad*) OVERRIDE; |
+ virtual void DoDrawQuad(DrawingFrame* frame, |
+ const class DrawQuad*, |
+ const gfx::QuadF* draw_region = NULL) OVERRIDE; |
virtual void BeginDrawingFrame(DrawingFrame* frame) OVERRIDE; |
virtual void FinishDrawingFrame(DrawingFrame* frame) OVERRIDE; |
virtual bool FlippedFramebuffer() const OVERRIDE; |
@@ -140,7 +143,8 @@ class CC_EXPORT GLRenderer : public DirectRenderer { |
static void ToGLMatrix(float* gl_matrix, const gfx::Transform& transform); |
void DrawCheckerboardQuad(const DrawingFrame* frame, |
- const CheckerboardDrawQuad* quad); |
+ const CheckerboardDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
void DrawDebugBorderQuad(const DrawingFrame* frame, |
const DebugBorderDrawQuad* quad); |
scoped_ptr<ScopedResource> GetBackgroundWithFilters( |
@@ -149,27 +153,46 @@ class CC_EXPORT GLRenderer : public DirectRenderer { |
const gfx::Transform& contents_device_transform, |
const gfx::Transform& contents_device_transformInverse, |
bool* background_changed); |
- void DrawRenderPassQuad(DrawingFrame* frame, const RenderPassDrawQuad* quad); |
+ void DrawRenderPassQuad(DrawingFrame* frame, |
+ const RenderPassDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
void DrawSolidColorQuad(const DrawingFrame* frame, |
- const SolidColorDrawQuad* quad); |
+ const SolidColorDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
void DrawStreamVideoQuad(const DrawingFrame* frame, |
- const StreamVideoDrawQuad* quad); |
+ const StreamVideoDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
+ void DrawTextureQuad(const DrawingFrame* frame, |
+ const TextureDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
void EnqueueTextureQuad(const DrawingFrame* frame, |
- const TextureDrawQuad* quad); |
- void FlushTextureQuadCache(); |
+ const TextureDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
+ void FlushTextureQuadCache(bool using_clip_region); |
void DrawIOSurfaceQuad(const DrawingFrame* frame, |
- const IOSurfaceDrawQuad* quad); |
- void DrawTileQuad(const DrawingFrame* frame, const TileDrawQuad* quad); |
+ const IOSurfaceDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
+ void DrawTileQuad(const DrawingFrame* frame, |
+ const TileDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
void DrawContentQuad(const DrawingFrame* frame, |
const ContentDrawQuadBase* quad, |
- ResourceProvider::ResourceId resource_id); |
+ ResourceProvider::ResourceId resource_id, |
+ const gfx::QuadF* clip_region); |
void DrawYUVVideoQuad(const DrawingFrame* frame, |
- const YUVVideoDrawQuad* quad); |
+ const YUVVideoDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
void DrawPictureQuad(const DrawingFrame* frame, |
- const PictureDrawQuad* quad); |
+ const PictureDrawQuad* quad, |
+ const gfx::QuadF* clip_region); |
void SetShaderOpacity(float opacity, int alpha_location); |
void SetShaderQuadF(const gfx::QuadF& quad, int quad_location); |
+ void DrawQuadGeometryClippedByQuadF(const DrawingFrame* frame, |
+ const gfx::Transform& draw_transform, |
+ const gfx::RectF& quad_rect, |
+ const gfx::QuadF& clipping_region_quad, |
+ int matrix_location); |
void DrawQuadGeometry(const DrawingFrame* frame, |
const gfx::Transform& draw_transform, |
const gfx::RectF& quad_rect, |
@@ -218,6 +241,7 @@ class CC_EXPORT GLRenderer : public DirectRenderer { |
unsigned offscreen_framebuffer_id_; |
scoped_ptr<GeometryBinding> shared_geometry_; |
+ scoped_ptr<GeometryBindingQuad> clipped_geometry_; |
gfx::QuadF shared_geometry_quad_; |
// This block of bindings defines all of the programs used by the compositor |