| Index: cc/output/gl_renderer.h
|
| diff --git a/cc/output/gl_renderer.h b/cc/output/gl_renderer.h
|
| index 01668abb23823b597e1b6af2da4cd1da11769143..27f2c4221ef4fc8abc6d19059ba364bf1dcf3e00 100644
|
| --- a/cc/output/gl_renderer.h
|
| +++ b/cc/output/gl_renderer.h
|
| @@ -39,7 +39,8 @@ class ScopedResource;
|
| class StreamVideoDrawQuad;
|
| class TextureDrawQuad;
|
| class TextureMailboxDeleter;
|
| -class GeometryBinding;
|
| +class StaticGeometryBinding;
|
| +class DynamicGeometryBinding;
|
| class ScopedEnsureFramebufferAllocation;
|
|
|
| // Class that handles drawing of composited render layers using GL.
|
| @@ -85,7 +86,7 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| bool IsBackbufferDiscarded() const { return is_backbuffer_discarded_; }
|
|
|
| const gfx::QuadF& SharedGeometryQuad() const { return shared_geometry_quad_; }
|
| - const GeometryBinding* SharedGeometry() const {
|
| + const StaticGeometryBinding* SharedGeometry() const {
|
| return shared_geometry_.get();
|
| }
|
|
|
| @@ -96,7 +97,8 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| ResourceFormat texture_format,
|
| const gfx::Rect& device_rect);
|
| void ReleaseRenderPassTextures();
|
| -
|
| + enum BoundGeometry { NO_BINDING, SHARED_BINDING, CLIPPED_BINDING };
|
| + void PrepareGeometry(BoundGeometry geometry_to_bind);
|
| void SetStencilEnabled(bool enabled);
|
| bool stencil_enabled() const { return stencil_shadow_; }
|
| void SetBlendEnabled(bool enabled);
|
| @@ -112,7 +114,9 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| bool draw_rect_covers_full_surface) override;
|
| void ClearFramebuffer(DrawingFrame* frame,
|
| bool has_external_stencil_test) override;
|
| - void DoDrawQuad(DrawingFrame* frame, const class DrawQuad*) override;
|
| + void DoDrawQuad(DrawingFrame* frame,
|
| + const class DrawQuad*,
|
| + const gfx::QuadF* draw_region) override;
|
| void BeginDrawingFrame(DrawingFrame* frame) override;
|
| void FinishDrawingFrame(DrawingFrame* frame) override;
|
| bool FlippedFramebuffer(const DrawingFrame* frame) const override;
|
| @@ -132,10 +136,13 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| // Inflate the quad and fill edge array for fragment shader.
|
| // |local_quad| is set to inflated quad. |edge| array is filled with
|
| // inflated quad's edge data.
|
| - static void SetupQuadForAntialiasing(const gfx::Transform& device_transform,
|
| - const DrawQuad* quad,
|
| - gfx::QuadF* local_quad,
|
| - float edge[24]);
|
| + static void SetupQuadForClippingAndAntialiasing(
|
| + const gfx::Transform& device_transform,
|
| + const DrawQuad* quad,
|
| + bool use_aa,
|
| + const gfx::QuadF* clip_region,
|
| + gfx::QuadF* local_quad,
|
| + float edge[24]);
|
|
|
| private:
|
| friend class GLRendererShaderPixelTest;
|
| @@ -144,7 +151,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);
|
| static bool IsDefaultBlendMode(SkXfermode::Mode blend_mode) {
|
| @@ -158,6 +166,7 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| DrawingFrame* frame,
|
| const RenderPassDrawQuad* quad,
|
| const gfx::Transform& contents_device_transform,
|
| + const gfx::QuadF* clip_region,
|
| bool use_aa);
|
| scoped_ptr<ScopedResource> GetBackdropTexture(const gfx::Rect& bounding_rect);
|
|
|
| @@ -168,34 +177,56 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| const RenderPassDrawQuad* quad,
|
| ScopedResource* background_texture);
|
|
|
| - void DrawRenderPassQuad(DrawingFrame* frame, const RenderPassDrawQuad* quad);
|
| + void DrawRenderPassQuad(DrawingFrame* frame,
|
| + const RenderPassDrawQuad* quadi,
|
| + 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(BoundGeometry flush_binding);
|
| 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 DrawContentQuadAA(const DrawingFrame* frame,
|
| const ContentDrawQuadBase* quad,
|
| ResourceProvider::ResourceId resource_id,
|
| - const gfx::Transform& device_transform);
|
| + const gfx::Transform& device_transform,
|
| + const gfx::QuadF* clip_region);
|
| void DrawContentQuadNoAA(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,
|
| + const float uv[8]);
|
| void DrawQuadGeometry(const DrawingFrame* frame,
|
| const gfx::Transform& draw_transform,
|
| const gfx::RectF& quad_rect,
|
| @@ -237,7 +268,8 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
|
|
| unsigned offscreen_framebuffer_id_;
|
|
|
| - scoped_ptr<GeometryBinding> shared_geometry_;
|
| + scoped_ptr<StaticGeometryBinding> shared_geometry_;
|
| + scoped_ptr<DynamicGeometryBinding> clipped_geometry_;
|
| gfx::QuadF shared_geometry_quad_;
|
|
|
| // This block of bindings defines all of the programs used by the compositor
|
| @@ -480,7 +512,7 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
|
|
| SkBitmap on_demand_tile_raster_bitmap_;
|
| ResourceProvider::ResourceId on_demand_tile_raster_resource_id_;
|
| -
|
| + BoundGeometry bound_geometry_;
|
| DISALLOW_COPY_AND_ASSIGN(GLRenderer);
|
| };
|
|
|
|
|