diff options
author | skaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-11 16:56:03 +0000 |
---|---|---|
committer | skaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-11 16:56:03 +0000 |
commit | f899cad091d031d98729db9b1e46163cdd2fc52a (patch) | |
tree | 1a088435be209d0c8ee6c20b042a699442c2a938 /cc | |
parent | cadac62e5c2b9f5fef59ce0326bb2cd79ffbe622 (diff) | |
download | chromium_src-f899cad091d031d98729db9b1e46163cdd2fc52a.zip chromium_src-f899cad091d031d98729db9b1e46163cdd2fc52a.tar.gz chromium_src-f899cad091d031d98729db9b1e46163cdd2fc52a.tar.bz2 |
[Software Compositor] Explicitly handle checkerboard draw quads.
Invalid or unsupported draw quads now hit a NOTREACHED section.
R=enne@chromium.org
BUG=161008
Review URL: https://codereview.chromium.org/16667018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205562 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/output/software_renderer.cc | 24 | ||||
-rw-r--r-- | cc/output/software_renderer.h | 13 |
2 files changed, 28 insertions, 9 deletions
diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc index 87bc129..2b54e80 100644 --- a/cc/output/software_renderer.cc +++ b/cc/output/software_renderer.cc @@ -12,6 +12,7 @@ #include "cc/output/copy_output_request.h" #include "cc/output/output_surface.h" #include "cc/output/software_output_device.h" +#include "cc/quads/checkerboard_draw_quad.h" #include "cc/quads/debug_border_draw_quad.h" #include "cc/quads/picture_draw_quad.h" #include "cc/quads/render_pass_draw_quad.h" @@ -228,12 +229,18 @@ void SoftwareRenderer::DoDrawQuad(DrawingFrame* frame, const DrawQuad* quad) { } switch (quad->material) { + case DrawQuad::CHECKERBOARD: + DrawCheckerboardQuad(frame, CheckerboardDrawQuad::MaterialCast(quad)); + break; case DrawQuad::DEBUG_BORDER: DrawDebugBorderQuad(frame, DebugBorderDrawQuad::MaterialCast(quad)); break; case DrawQuad::PICTURE_CONTENT: DrawPictureQuad(frame, PictureDrawQuad::MaterialCast(quad)); break; + case DrawQuad::RENDER_PASS: + DrawRenderPassQuad(frame, RenderPassDrawQuad::MaterialCast(quad)); + break; case DrawQuad::SOLID_COLOR: DrawSolidColorQuad(frame, SolidColorDrawQuad::MaterialCast(quad)); break; @@ -243,17 +250,26 @@ void SoftwareRenderer::DoDrawQuad(DrawingFrame* frame, const DrawQuad* quad) { case DrawQuad::TILED_CONTENT: DrawTileQuad(frame, TileDrawQuad::MaterialCast(quad)); break; - case DrawQuad::RENDER_PASS: - DrawRenderPassQuad(frame, RenderPassDrawQuad::MaterialCast(quad)); - break; - default: + case DrawQuad::INVALID: + case DrawQuad::IO_SURFACE_CONTENT: + case DrawQuad::YUV_VIDEO_CONTENT: + case DrawQuad::STREAM_VIDEO_CONTENT: DrawUnsupportedQuad(frame, quad); + NOTREACHED(); break; } current_canvas_->resetMatrix(); } +void SoftwareRenderer::DrawCheckerboardQuad(const DrawingFrame* frame, + const CheckerboardDrawQuad* quad) { + current_paint_.setColor(quad->color); + current_paint_.setAlpha(quad->opacity() * SkColorGetA(quad->color)); + current_canvas_->drawRect(gfx::RectFToSkRect(QuadVertexRect()), + current_paint_); +} + void SoftwareRenderer::DrawDebugBorderQuad(const DrawingFrame* frame, const DebugBorderDrawQuad* quad) { // We need to apply the matrix manually to have pixel-sized stroke width. diff --git a/cc/output/software_renderer.h b/cc/output/software_renderer.h index 079ee1e..4adf922 100644 --- a/cc/output/software_renderer.h +++ b/cc/output/software_renderer.h @@ -13,13 +13,14 @@ namespace cc { class OutputSurface; +class RendererClient; +class ResourceProvider; class SoftwareOutputDevice; -class ContentDrawQuadBase; + +class CheckerboardDrawQuad; class DebugBorderDrawQuad; class PictureDrawQuad; -class RendererClient; class RenderPassDrawQuad; -class ResourceProvider; class SolidColorDrawQuad; class TextureDrawQuad; class TileDrawQuad; @@ -73,18 +74,20 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer { void SetClipRect(gfx::Rect rect); bool IsSoftwareResource(ResourceProvider::ResourceId resource_id) const; + void DrawCheckerboardQuad(const DrawingFrame* frame, + const CheckerboardDrawQuad* quad); void DrawDebugBorderQuad(const DrawingFrame* frame, const DebugBorderDrawQuad* quad); void DrawPictureQuad(const DrawingFrame* frame, const PictureDrawQuad* quad); + void DrawRenderPassQuad(const DrawingFrame* frame, + const RenderPassDrawQuad* quad); void DrawSolidColorQuad(const DrawingFrame* frame, const SolidColorDrawQuad* quad); void DrawTextureQuad(const DrawingFrame* frame, const TextureDrawQuad* quad); void DrawTileQuad(const DrawingFrame* frame, const TileDrawQuad* quad); - void DrawRenderPassQuad(const DrawingFrame* frame, - const RenderPassDrawQuad* quad); void DrawUnsupportedQuad(const DrawingFrame* frame, const DrawQuad* quad); |