summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorskaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-11 16:56:03 +0000
committerskaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-11 16:56:03 +0000
commitf899cad091d031d98729db9b1e46163cdd2fc52a (patch)
tree1a088435be209d0c8ee6c20b042a699442c2a938 /cc
parentcadac62e5c2b9f5fef59ce0326bb2cd79ffbe622 (diff)
downloadchromium_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.cc24
-rw-r--r--cc/output/software_renderer.h13
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);