Chromium Code Reviews| Index: cc/output/gl_renderer.h |
| diff --git a/cc/output/gl_renderer.h b/cc/output/gl_renderer.h |
| index 22e7706d778769018a0a504eb0e70149f4f94b64..5ea8a44809ccadf34798474eada58460822a00fa 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 { NoBinding, SharedBinding, ClippedBinding }; |
|
enne (OOO)
2015/02/12 18:00:27
style nit: Chromium enums are NO_BINDING, SHARED_B
awoloszyn
2015/02/23 22:28:27
Done.
|
| + 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(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 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); |
|
enne (OOO)
2015/02/12 18:00:27
const float uv[8]
awoloszyn
2015/02/23 22:28:27
Done.
|
| 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 |
| @@ -456,7 +488,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); |
| }; |