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

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: Use SkBitmap in SoftwareRendererTest instead of doing raw pixel manipulation 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
« no previous file with comments | « 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..4f2d605827dff9a2780478961852ccd1a8303bee 100644
--- a/cc/output/software_renderer_unittest.cc
+++ b/cc/output/software_renderer_unittest.cc
@@ -82,9 +82,6 @@ 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,27 +108,24 @@ TEST_F(SoftwareRendererTest, SolidColorQuad) {
list.push_back(root_render_pass.PassAs<RenderPass>());
renderer()->DrawFrame(&list);
- scoped_ptr<SkColor[]> pixels(new SkColor[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
+ SkBitmap output;
+ output.setConfig(SkBitmap::kARGB_8888_Config,
+ DeviceViewportSize().width(),
+ DeviceViewportSize().height());
+ output.allocPixels();
+ renderer()->GetFramebufferPixels(output.getPixels(), outer_rect);
+
+ EXPECT_EQ(SK_ColorYELLOW, output.getColor(0, 0));
+ EXPECT_EQ(SK_ColorYELLOW,
+ output.getColor(outer_size.width() - 1, outer_size.height() - 1));
+ EXPECT_EQ(SK_ColorCYAN, output.getColor(1, 1));
+ EXPECT_EQ(SK_ColorCYAN,
+ output.getColor(inner_size.width() - 1, inner_size.height() - 1));
}
TEST_F(SoftwareRendererTest, TileQuad) {
gfx::Size outer_size(100, 100);
- int outer_pixels = outer_size.width() * outer_size.height();
gfx::Size inner_size(98, 98);
- int inner_pixels = inner_size.width() * inner_size.height();
gfx::Rect outer_rect(outer_size);
gfx::Rect inner_rect(gfx::Point(1, 1), inner_size);
set_viewport_size(outer_size);
@@ -144,23 +138,26 @@ 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]);
- for (int i = 0; i < outer_pixels; i++)
- yellow_pixels[i] = yellow;
- for (int i = 0; i < inner_pixels; i++)
- cyan_pixels[i] = cyan;
+ SkBitmap yellow_tile;
+ yellow_tile.setConfig(
+ SkBitmap::kARGB_8888_Config, outer_size.width(), outer_size.height());
+ yellow_tile.allocPixels();
+ yellow_tile.eraseColor(SK_ColorYELLOW);
+
+ SkBitmap cyan_tile;
+ cyan_tile.setConfig(
+ SkBitmap::kARGB_8888_Config, inner_size.width(), inner_size.height());
+ cyan_tile.allocPixels();
+ cyan_tile.eraseColor(SK_ColorCYAN);
resource_provider()->SetPixels(
resource_yellow,
- reinterpret_cast<uint8_t*>(yellow_pixels.get()),
+ static_cast<uint8_t*>(yellow_tile.getPixels()),
gfx::Rect(outer_size),
gfx::Rect(outer_size),
gfx::Vector2d());
resource_provider()->SetPixels(resource_cyan,
- reinterpret_cast<uint8_t*>(cyan_pixels.get()),
+ static_cast<uint8_t*>(cyan_tile.getPixels()),
gfx::Rect(inner_size),
gfx::Rect(inner_size),
gfx::Vector2d());
@@ -197,25 +194,34 @@ TEST_F(SoftwareRendererTest, TileQuad) {
list.push_back(root_render_pass.PassAs<RenderPass>());
renderer()->DrawFrame(&list);
- scoped_ptr<SkColor[]> pixels(new SkColor[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]);
+ SkBitmap output;
+ output.setConfig(SkBitmap::kARGB_8888_Config,
+ DeviceViewportSize().width(),
+ DeviceViewportSize().height());
+ output.allocPixels();
+ renderer()->GetFramebufferPixels(output.getPixels(), outer_rect);
+
+ EXPECT_EQ(SK_ColorYELLOW, output.getColor(0, 0));
+ EXPECT_EQ(SK_ColorYELLOW,
+ output.getColor(outer_size.width() - 1, outer_size.height() - 1));
+ EXPECT_EQ(SK_ColorCYAN, output.getColor(1, 1));
+ EXPECT_EQ(SK_ColorCYAN,
+ output.getColor(inner_size.width() - 1, inner_size.height() - 1));
}
TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) {
gfx::Rect viewport_rect(0, 0, 100, 100);
- size_t viewport_pixels = viewport_rect.width() * viewport_rect.height();
set_viewport_size(viewport_rect.size());
set_should_clear_root_render_pass(false);
InitializeRenderer();
RenderPassList list;
- scoped_ptr<SkColor[]> pixels(new SkColor[viewport_pixels]);
+
+ SkBitmap output;
+ output.setConfig(SkBitmap::kARGB_8888_Config,
+ viewport_rect.width(),
+ viewport_rect.height());
+ output.allocPixels();
// Draw a fullscreen green quad in a first frame.
RenderPass::Id root_clear_pass_id(1, 0);
@@ -225,10 +231,11 @@ TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) {
renderer()->DecideRenderPassAllocationsForFrame(list);
renderer()->DrawFrame(&list);
- renderer()->GetFramebufferPixels(pixels.get(), viewport_rect);
+ renderer()->GetFramebufferPixels(output.getPixels(), viewport_rect);
- EXPECT_EQ(SK_ColorGREEN, pixels[0]);
- EXPECT_EQ(SK_ColorGREEN, pixels[viewport_pixels - 1]);
+ EXPECT_EQ(SK_ColorGREEN, output.getColor(0, 0));
+ EXPECT_EQ(SK_ColorGREEN,
+ output.getColor(viewport_rect.width() - 1, viewport_rect.height() - 1));
list.clear();
@@ -243,18 +250,17 @@ TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) {
renderer()->DecideRenderPassAllocationsForFrame(list);
renderer()->DrawFrame(&list);
- renderer()->GetFramebufferPixels(pixels.get(), viewport_rect);
+ renderer()->GetFramebufferPixels(output.getPixels(), 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(SK_ColorGREEN, output.getColor(0, 0));
+ EXPECT_EQ(SK_ColorGREEN,
+ output.getColor(viewport_rect.width() - 1, viewport_rect.height() - 1));
- EXPECT_EQ(
- SK_ColorMAGENTA,
- pixels[smaller_rect.y() * viewport_rect.width() + smaller_rect.x()]);
EXPECT_EQ(SK_ColorMAGENTA,
- pixels[(smaller_rect.bottom() - 1) * viewport_rect.width() +
- smaller_rect.right() - 1]);
+ output.getColor(smaller_rect.x(), smaller_rect.y()));
+ EXPECT_EQ(SK_ColorMAGENTA,
+ output.getColor(smaller_rect.right() - 1, smaller_rect.bottom() - 1));
}
} // namespace
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698