Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Unified Diff: cc/output/gl_renderer.h

Issue 595593002: Splitting of layers for correct intersections (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698