| 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
|
|
|