Index: cc/output/direct_renderer.h |
diff --git a/cc/output/direct_renderer.h b/cc/output/direct_renderer.h |
index 3399491c058f42e87585f1dffebb5a793b136257..dd3d13b455fbbb01f823bdad0343e7290124d8c5 100644 |
--- a/cc/output/direct_renderer.h |
+++ b/cc/output/direct_renderer.h |
@@ -63,9 +63,15 @@ class CC_EXPORT DirectRenderer : public Renderer { |
void DoDrawPolygon(const DrawPolygon& poly, |
DrawingFrame* frame, |
const gfx::Rect& render_pass_scissor, |
- bool using_scissor_as_optimization); |
+ bool use_render_pass_scissor); |
protected: |
+ enum SurfaceInitializationMode { |
+ SURFACE_INITIALIZATION_MODE_PRESERVE, |
+ SURFACE_INITIALIZATION_MODE_SCISSORED_CLEAR, |
+ SURFACE_INITIALIZATION_MODE_FULL_SURFACE_CLEAR, |
+ }; |
+ |
DirectRenderer(RendererClient* client, |
const RendererSettings* settings, |
OutputSurface* output_surface, |
@@ -83,15 +89,16 @@ class CC_EXPORT DirectRenderer : public Renderer { |
const gfx::Rect& draw_rect) const; |
bool NeedDeviceClip(const DrawingFrame* frame) const; |
- gfx::Rect DeviceClipRectInWindowSpace(const DrawingFrame* frame) const; |
+ gfx::Rect DeviceClipRectInDrawSpace(const DrawingFrame* frame) const; |
+ gfx::Rect DeviceViewportRectInDrawSpace(const DrawingFrame* frame) const; |
+ gfx::Rect OutputSurfaceRectInDrawSpace(const DrawingFrame* frame) const; |
static gfx::Rect ComputeScissorRectForRenderPass(const DrawingFrame* frame); |
- void SetScissorStateForQuad(const DrawingFrame* frame, const DrawQuad& quad); |
+ void SetScissorStateForQuad(const DrawingFrame* frame, |
+ const DrawQuad& quad, |
+ const gfx::Rect& render_pass_scissor, |
+ bool use_render_pass_scissor); |
bool ShouldSkipQuad(const DrawQuad& quad, |
const gfx::Rect& render_pass_scissor); |
- void SetScissorStateForQuadWithRenderPassScissor( |
- const DrawingFrame* frame, |
- const DrawQuad& quad, |
- const gfx::Rect& render_pass_scissor); |
void SetScissorTestRectInDrawSpace(const DrawingFrame* frame, |
const gfx::Rect& draw_space_rect); |
@@ -100,7 +107,7 @@ class CC_EXPORT DirectRenderer : public Renderer { |
void FlushPolygons(ScopedPtrDeque<DrawPolygon>* poly_list, |
DrawingFrame* frame, |
const gfx::Rect& render_pass_scissor, |
- bool using_scissor_as_optimization); |
+ bool use_render_pass_scissor); |
void DrawRenderPass(DrawingFrame* frame, const RenderPass* render_pass); |
bool UseRenderPass(DrawingFrame* frame, const RenderPass* render_pass); |
@@ -110,10 +117,10 @@ class CC_EXPORT DirectRenderer : public Renderer { |
const gfx::Rect& target_rect) = 0; |
virtual void SetDrawViewport(const gfx::Rect& window_space_viewport) = 0; |
virtual void SetScissorTestRect(const gfx::Rect& scissor_rect) = 0; |
- virtual void DiscardPixels(bool has_external_stencil_test, |
- bool draw_rect_covers_full_surface) = 0; |
- virtual void ClearFramebuffer(DrawingFrame* frame, |
- bool has_external_stencil_test) = 0; |
+ virtual void PrepareSurfaceForPass( |
+ DrawingFrame* frame, |
+ SurfaceInitializationMode initialization_mode, |
+ const gfx::Rect& render_pass_scissor) = 0; |
// clip_region is a (possibly null) pointer to a quad in the same |
// space as the quad. When non-null only the area of the quad that overlaps |
// with clip_region will be drawn. |