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

Unified Diff: cc/output/software_renderer_unittest.cc

Issue 14883004: cc: Use SkPMColor consistently on readback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change GLRenderer to also emit SkPMColor Created 7 years, 7 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
« cc/output/gl_renderer.cc ('K') | « cc/output/gl_renderer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/software_renderer_unittest.cc
diff --git a/cc/output/software_renderer_unittest.cc b/cc/output/software_renderer_unittest.cc
index 74eef53d77f78647909f5e5b6e779e2a0c57d286..ba41a307dd0de1549d1959c4a8124a40891b4ca9 100644
--- a/cc/output/software_renderer_unittest.cc
+++ b/cc/output/software_renderer_unittest.cc
@@ -82,9 +82,7 @@ class SoftwareRendererTest : public testing::Test, public RendererClient {
TEST_F(SoftwareRendererTest, SolidColorQuad) {
gfx::Size outer_size(100, 100);
-#if !defined(OS_ANDROID)
int outer_pixels = outer_size.width() * outer_size.height();
-#endif
gfx::Size inner_size(98, 98);
gfx::Rect outer_rect(outer_size);
gfx::Rect inner_rect(gfx::Point(1, 1), inner_size);
@@ -111,20 +109,15 @@ TEST_F(SoftwareRendererTest, SolidColorQuad) {
list.push_back(root_render_pass.PassAs<RenderPass>());
renderer()->DrawFrame(&list);
- scoped_ptr<SkColor[]> pixels(new SkColor[DeviceViewportSize().width() *
+ scoped_ptr<SkPMColor[]> pixels(new SkPMColor[DeviceViewportSize().width() *
DeviceViewportSize().height()]);
renderer()->GetFramebufferPixels(pixels.get(), outer_rect);
-// FIXME: This fails on Android. Endianness maybe?
-// Yellow: expects 0xFFFFFF00, was 0xFF00FFFF on android.
-// Cyan: expects 0xFF00FFFF, was 0xFFFFFF00 on android.
-// http://crbug.com/154528
-#if !defined(OS_ANDROID)
- EXPECT_EQ(SK_ColorYELLOW, pixels[0]);
- EXPECT_EQ(SK_ColorYELLOW, pixels[outer_pixels - 1]);
- EXPECT_EQ(SK_ColorCYAN, pixels[outer_size.width() + 1]);
- EXPECT_EQ(SK_ColorCYAN, pixels[outer_pixels - outer_size.width() - 2]);
-#endif
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorYELLOW), pixels[0]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorYELLOW), pixels[outer_pixels - 1]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorCYAN), pixels[outer_size.width() + 1]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorCYAN),
+ pixels[outer_pixels - outer_size.width() - 2]);
}
TEST_F(SoftwareRendererTest, TileQuad) {
@@ -144,10 +137,10 @@ TEST_F(SoftwareRendererTest, TileQuad) {
resource_provider()->CreateResource(
inner_size, GL_RGBA, ResourceProvider::TextureUsageAny);
- SkColor yellow = SK_ColorYELLOW;
- SkColor cyan = SK_ColorCYAN;
- scoped_ptr<SkColor[]> yellow_pixels(new SkColor[outer_pixels]);
- scoped_ptr<SkColor[]> cyan_pixels(new SkColor[inner_pixels]);
+ SkPMColor yellow = SkPreMultiplyColor(SK_ColorYELLOW);
danakj 2013/05/08 17:38:43 So I get that the readback is going to premultipli
+ SkPMColor cyan = SkPreMultiplyColor(SK_ColorCYAN);
+ scoped_ptr<SkPMColor[]> yellow_pixels(new SkPMColor[outer_pixels]);
+ scoped_ptr<SkPMColor[]> cyan_pixels(new SkPMColor[inner_pixels]);
for (int i = 0; i < outer_pixels; i++)
yellow_pixels[i] = yellow;
for (int i = 0; i < inner_pixels; i++)
@@ -197,14 +190,15 @@ TEST_F(SoftwareRendererTest, TileQuad) {
list.push_back(root_render_pass.PassAs<RenderPass>());
renderer()->DrawFrame(&list);
- scoped_ptr<SkColor[]> pixels(new SkColor[DeviceViewportSize().width() *
+ scoped_ptr<SkPMColor[]> pixels(new SkPMColor[DeviceViewportSize().width() *
DeviceViewportSize().height()]);
renderer()->GetFramebufferPixels(pixels.get(), outer_rect);
- EXPECT_EQ(SK_ColorYELLOW, pixels[0]);
- EXPECT_EQ(SK_ColorYELLOW, pixels[outer_pixels - 1]);
- EXPECT_EQ(SK_ColorCYAN, pixels[outer_size.width() + 1]);
- EXPECT_EQ(SK_ColorCYAN, pixels[outer_pixels - outer_size.width() - 2]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorYELLOW), pixels[0]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorYELLOW), pixels[outer_pixels - 1]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorCYAN), pixels[outer_size.width() + 1]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorCYAN),
+ pixels[outer_pixels - outer_size.width() - 2]);
}
TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) {
@@ -215,7 +209,7 @@ TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) {
InitializeRenderer();
RenderPassList list;
- scoped_ptr<SkColor[]> pixels(new SkColor[viewport_pixels]);
+ scoped_ptr<SkPMColor[]> pixels(new SkPMColor[viewport_pixels]);
// Draw a fullscreen green quad in a first frame.
RenderPass::Id root_clear_pass_id(1, 0);
@@ -227,8 +221,8 @@ TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) {
renderer()->DrawFrame(&list);
renderer()->GetFramebufferPixels(pixels.get(), viewport_rect);
- EXPECT_EQ(SK_ColorGREEN, pixels[0]);
- EXPECT_EQ(SK_ColorGREEN, pixels[viewport_pixels - 1]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorGREEN), pixels[0]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorGREEN), pixels[viewport_pixels - 1]);
list.clear();
@@ -246,13 +240,13 @@ TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) {
renderer()->GetFramebufferPixels(pixels.get(), viewport_rect);
// If we didn't clear, the borders should still be green.
- EXPECT_EQ(SK_ColorGREEN, pixels[0]);
- EXPECT_EQ(SK_ColorGREEN, pixels[viewport_pixels - 1]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorGREEN), pixels[0]);
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorGREEN), pixels[viewport_pixels - 1]);
EXPECT_EQ(
- SK_ColorMAGENTA,
+ SkPreMultiplyColor(SK_ColorMAGENTA),
pixels[smaller_rect.y() * viewport_rect.width() + smaller_rect.x()]);
- EXPECT_EQ(SK_ColorMAGENTA,
+ EXPECT_EQ(SkPreMultiplyColor(SK_ColorMAGENTA),
pixels[(smaller_rect.bottom() - 1) * viewport_rect.width() +
smaller_rect.right() - 1]);
}
« cc/output/gl_renderer.cc ('K') | « cc/output/gl_renderer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698