summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorreed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-25 22:00:51 +0000
committerreed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-25 22:00:51 +0000
commit0046982c81ef5cf5cca021ec4bb1bfc83d0c3973 (patch)
treea601b47203a8a032442be78df0df496d42c7f37b /cc
parentc14865ce46b841b4b2f86f8016e42939b8387022 (diff)
downloadchromium_src-0046982c81ef5cf5cca021ec4bb1bfc83d0c3973.zip
chromium_src-0046982c81ef5cf5cca021ec4bb1bfc83d0c3973.tar.gz
chromium_src-0046982c81ef5cf5cca021ec4bb1bfc83d0c3973.tar.bz2
SkColorType instead of (deprecated) SkBitmap::Config
Part of this refactoring was the recognition of a common pattern: - setConfig + alloc + setImmutable + pass_to_UIResourceBitmap This CL introduces a direct way on UIResourceBitmap to create such a bitmap, by just specifying its dimensions. This encapsulates internal requirements (e.g. colortype and immutability). Review URL: https://codereview.chromium.org/197883017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@259349 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r--cc/layers/heads_up_display_layer_impl.cc11
-rw-r--r--cc/layers/nine_patch_layer_impl_unittest.cc8
-rw-r--r--cc/layers/nine_patch_layer_unittest.cc8
-rw-r--r--cc/layers/painted_scrollbar_layer.cc6
-rw-r--r--cc/layers/ui_resource_layer_impl_unittest.cc10
-rw-r--r--cc/layers/ui_resource_layer_unittest.cc11
-rw-r--r--cc/output/gl_renderer.cc10
-rw-r--r--cc/output/renderer_pixeltest.cc3
-rw-r--r--cc/resources/bitmap_content_layer_updater.cc7
-rw-r--r--cc/resources/picture_pile_impl_unittest.cc10
-rw-r--r--cc/resources/resource_provider.cc53
-rw-r--r--cc/resources/resource_provider_unittest.cc16
-rw-r--r--cc/resources/resource_update_controller_unittest.cc3
-rw-r--r--cc/resources/ui_resource_bitmap.cc17
-rw-r--r--cc/resources/ui_resource_bitmap.h6
-rw-r--r--cc/test/fake_scoped_ui_resource.cc7
-rw-r--r--cc/test/layer_tree_json_parser.cc3
-rw-r--r--cc/test/layer_tree_pixel_test.cc8
-rw-r--r--cc/test/skia_common.cc17
-rw-r--r--cc/test/tiled_layer_test_common.cc3
-rw-r--r--cc/trees/layer_tree_host_impl_unittest.cc16
-rw-r--r--cc/trees/layer_tree_host_pixeltest_masks.cc3
-rw-r--r--cc/trees/layer_tree_host_pixeltest_readback.cc13
-rw-r--r--cc/trees/layer_tree_host_unittest.cc3
24 files changed, 93 insertions, 159 deletions
diff --git a/cc/layers/heads_up_display_layer_impl.cc b/cc/layers/heads_up_display_layer_impl.cc
index c6ed5fc..888913c 100644
--- a/cc/layers/heads_up_display_layer_impl.cc
+++ b/cc/layers/heads_up_display_layer_impl.cc
@@ -170,13 +170,14 @@ void HeadsUpDisplayLayerImpl::UpdateHudTexture(
}
TRACE_EVENT0("cc", "UploadHudTexture");
- const SkBitmap* bitmap = &hud_canvas_->getDevice()->accessBitmap(false);
- SkAutoLockPixels locker(*bitmap);
-
+ SkImageInfo info;
+ size_t row_bytes = 0;
+ const void* pixels = hud_canvas_->peekPixels(&info, &row_bytes);
+ DCHECK(pixels);
gfx::Rect content_rect(content_bounds());
- DCHECK(bitmap->config() == SkBitmap::kARGB_8888_Config);
+ DCHECK(info.colorType() == kPMColor_SkColorType);
resource_provider->SetPixels(hud_resource_->id(),
- static_cast<const uint8_t*>(bitmap->getPixels()),
+ static_cast<const uint8_t*>(pixels),
content_rect,
content_rect,
gfx::Vector2d());
diff --git a/cc/layers/nine_patch_layer_impl_unittest.cc b/cc/layers/nine_patch_layer_impl_unittest.cc
index 614f5ed..2a7cf9c 100644
--- a/cc/layers/nine_patch_layer_impl_unittest.cc
+++ b/cc/layers/nine_patch_layer_impl_unittest.cc
@@ -55,12 +55,8 @@ void NinePatchLayerLayoutTest(const gfx::Size& bitmap_size,
layer->draw_properties().render_target = layer.get();
UIResourceId uid = 1;
- SkBitmap skbitmap;
- skbitmap.setConfig(
- SkBitmap::kARGB_8888_Config, bitmap_size.width(), bitmap_size.height());
- skbitmap.allocPixels();
- skbitmap.setImmutable();
- UIResourceBitmap bitmap(skbitmap);
+ bool is_opaque = false;
+ UIResourceBitmap bitmap(bitmap_size, is_opaque);
host_impl.CreateUIResource(uid, bitmap);
layer->SetUIResourceId(uid);
diff --git a/cc/layers/nine_patch_layer_unittest.cc b/cc/layers/nine_patch_layer_unittest.cc
index cdb2af3..4166d8e 100644
--- a/cc/layers/nine_patch_layer_unittest.cc
+++ b/cc/layers/nine_patch_layer_unittest.cc
@@ -64,13 +64,9 @@ TEST_F(NinePatchLayerTest, SetLayerProperties) {
EXPECT_FALSE(test_layer->DrawsContent());
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
- bitmap.allocPixels();
- bitmap.setImmutable();
-
+ bool is_opaque = false;
scoped_ptr<ScopedUIResource> resource = ScopedUIResource::Create(
- layer_tree_host_.get(), UIResourceBitmap(bitmap));
+ layer_tree_host_.get(), UIResourceBitmap(gfx::Size(10, 10), is_opaque));
gfx::Rect aperture(5, 5, 1, 1);
bool fill_center = true;
test_layer->SetAperture(aperture);
diff --git a/cc/layers/painted_scrollbar_layer.cc b/cc/layers/painted_scrollbar_layer.cc
index 320ea30..f88951b 100644
--- a/cc/layers/painted_scrollbar_layer.cc
+++ b/cc/layers/painted_scrollbar_layer.cc
@@ -247,11 +247,7 @@ UIResourceBitmap PaintedScrollbarLayer::RasterizeScrollbarPart(
DCHECK(!layer_rect.size().IsEmpty());
SkBitmap skbitmap;
- skbitmap.setConfig(SkBitmap::kARGB_8888_Config,
- content_rect.width(),
- content_rect.height());
- skbitmap.allocPixels();
-
+ skbitmap.allocN32Pixels(content_rect.width(), content_rect.height());
SkCanvas skcanvas(skbitmap);
float scale_x =
diff --git a/cc/layers/ui_resource_layer_impl_unittest.cc b/cc/layers/ui_resource_layer_impl_unittest.cc
index c5933b6..e5eacc5 100644
--- a/cc/layers/ui_resource_layer_impl_unittest.cc
+++ b/cc/layers/ui_resource_layer_impl_unittest.cc
@@ -35,15 +35,7 @@ scoped_ptr<UIResourceLayerImpl> GenerateUIResourceLayer(
layer->CreateRenderSurface();
layer->draw_properties().render_target = layer.get();
- SkBitmap skbitmap;
- skbitmap.setConfig(SkBitmap::kARGB_8888_Config,
- bitmap_size.width(),
- bitmap_size.height(),
- 0,
- opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType);
- skbitmap.allocPixels();
- skbitmap.setImmutable();
- UIResourceBitmap bitmap(skbitmap);
+ UIResourceBitmap bitmap(bitmap_size, opaque);
host_impl->CreateUIResource(uid, bitmap);
layer->SetUIResourceId(uid);
diff --git a/cc/layers/ui_resource_layer_unittest.cc b/cc/layers/ui_resource_layer_unittest.cc
index 1e0e1dea..25cc2c7 100644
--- a/cc/layers/ui_resource_layer_unittest.cc
+++ b/cc/layers/ui_resource_layer_unittest.cc
@@ -65,8 +65,7 @@ TEST_F(UIResourceLayerTest, SetBitmap) {
EXPECT_FALSE(test_layer->DrawsContent());
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
- bitmap.allocPixels();
+ bitmap.allocN32Pixels(10, 10);
bitmap.setImmutable();
test_layer->SetBitmap(bitmap);
@@ -93,13 +92,9 @@ TEST_F(UIResourceLayerTest, SetUIResourceId) {
EXPECT_FALSE(test_layer->DrawsContent());
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
- bitmap.allocPixels();
- bitmap.setImmutable();
-
+ bool is_opaque = false;
scoped_ptr<ScopedUIResource> resource = ScopedUIResource::Create(
- layer_tree_host_.get(), UIResourceBitmap(bitmap));
+ layer_tree_host_.get(), UIResourceBitmap(gfx::Size(10, 10), is_opaque));
test_layer->SetUIResourceId(resource->id());
test_layer->Update(&queue, &occlusion_tracker);
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
index 89b1e00..b8f6397 100644
--- a/cc/output/gl_renderer.cc
+++ b/cc/output/gl_renderer.cc
@@ -1739,10 +1739,8 @@ void GLRenderer::DrawPictureQuad(const DrawingFrame* frame,
const PictureDrawQuad* quad) {
if (on_demand_tile_raster_bitmap_.width() != quad->texture_size.width() ||
on_demand_tile_raster_bitmap_.height() != quad->texture_size.height()) {
- on_demand_tile_raster_bitmap_.setConfig(SkBitmap::kARGB_8888_Config,
- quad->texture_size.width(),
- quad->texture_size.height());
- on_demand_tile_raster_bitmap_.allocPixels();
+ on_demand_tile_raster_bitmap_.allocN32Pixels(quad->texture_size.width(),
+ quad->texture_size.height());
if (on_demand_tile_raster_resource_id_)
resource_provider_->DeleteResource(on_demand_tile_raster_resource_id_);
@@ -2298,9 +2296,7 @@ void GLRenderer::GetFramebufferPixelsAsync(
DCHECK(request->force_bitmap_result());
scoped_ptr<SkBitmap> bitmap(new SkBitmap);
- bitmap->setConfig(
- SkBitmap::kARGB_8888_Config, window_rect.width(), window_rect.height());
- bitmap->allocPixels();
+ bitmap->allocN32Pixels(window_rect.width(), window_rect.height());
scoped_ptr<SkAutoLockPixels> lock(new SkAutoLockPixels(*bitmap));
diff --git a/cc/output/renderer_pixeltest.cc b/cc/output/renderer_pixeltest.cc
index 1165f9a..1511db9 100644
--- a/cc/output/renderer_pixeltest.cc
+++ b/cc/output/renderer_pixeltest.cc
@@ -1805,8 +1805,7 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) {
CreateTestRenderPass(id, viewport, transform_to_root);
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 2, 2);
- bitmap.allocPixels();
+ bitmap.allocN32Pixels(2, 2);
{
SkAutoLockPixels lock(bitmap);
SkCanvas canvas(bitmap);
diff --git a/cc/resources/bitmap_content_layer_updater.cc b/cc/resources/bitmap_content_layer_updater.cc
index 6f2332b..6f7cd01 100644
--- a/cc/resources/bitmap_content_layer_updater.cc
+++ b/cc/resources/bitmap_content_layer_updater.cc
@@ -64,11 +64,8 @@ void BitmapContentLayerUpdater::PrepareToUpdate(
devtools_instrumentation::ScopedLayerTask paint_setup(
devtools_instrumentation::kPaintSetup, layer_id_);
canvas_size_ = content_rect.size();
- bitmap_backing_.setConfig(
- SkBitmap::kARGB_8888_Config,
- canvas_size_.width(), canvas_size_.height(),
- 0, layer_is_opaque_ ? kOpaque_SkAlphaType : kPremul_SkAlphaType);
- bitmap_backing_.allocPixels();
+ bitmap_backing_.allocN32Pixels(
+ canvas_size_.width(), canvas_size_.height(), layer_is_opaque_);
canvas_ = skia::AdoptRef(new SkCanvas(bitmap_backing_));
}
diff --git a/cc/resources/picture_pile_impl_unittest.cc b/cc/resources/picture_pile_impl_unittest.cc
index f6414db..c60bce3 100644
--- a/cc/resources/picture_pile_impl_unittest.cc
+++ b/cc/resources/picture_pile_impl_unittest.cc
@@ -674,10 +674,7 @@ TEST(PicturePileImpl, RasterContentsOpaque) {
canvas_rect.Inset(0, 0, -1, -1);
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config,
- canvas_rect.width(),
- canvas_rect.height());
- bitmap.allocPixels();
+ bitmap.allocN32Pixels(canvas_rect.width(), canvas_rect.height());
SkCanvas canvas(bitmap);
canvas.clear(SK_ColorTRANSPARENT);
@@ -726,10 +723,7 @@ TEST(PicturePileImpl, RasterContentsTransparent) {
canvas_rect.Inset(0, 0, -1, -1);
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config,
- canvas_rect.width(),
- canvas_rect.height());
- bitmap.allocPixels();
+ bitmap.allocN32Pixels(canvas_rect.width(), canvas_rect.height());
SkCanvas canvas(bitmap);
FakeRenderingStatsInstrumentation rendering_stats_instrumentation;
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
index f0bc782..4e7b2c4 100644
--- a/cc/resources/resource_provider.cc
+++ b/cc/resources/resource_provider.cc
@@ -452,10 +452,8 @@ skia::RefPtr<SkSurface> ResourceProvider::DirectRasterBuffer::CreateSurface() {
DCHECK_EQ(RGBA_8888, resource()->format);
SkImageInfo image_info = SkImageInfo::MakeN32Premul(
resource()->size.width(), resource()->size.height());
- size_t row_bytes = SkBitmap::ComputeRowBytes(SkBitmap::kARGB_8888_Config,
- resource()->size.width());
surface = skia::AdoptRef(SkSurface::NewRasterDirect(
- image_info, resource()->pixels, row_bytes));
+ image_info, resource()->pixels, image_info.minRowBytes()));
break;
}
default:
@@ -486,19 +484,18 @@ SkCanvas* ResourceProvider::BitmapRasterBuffer::DoLockForWrite() {
case RGBA_4444:
// Use the default stride if we will eventually convert this
// bitmap to 4444.
- raster_bitmap_.setConfig(SkBitmap::kARGB_8888_Config,
- resource()->size.width(),
- resource()->size.height());
- raster_bitmap_.allocPixels();
+ raster_bitmap_.allocN32Pixels(resource()->size.width(),
+ resource()->size.height());
break;
case RGBA_8888:
- case BGRA_8888:
- raster_bitmap_.setConfig(SkBitmap::kARGB_8888_Config,
- resource()->size.width(),
- resource()->size.height(),
- stride);
- raster_bitmap_.setPixels(mapped_buffer_);
+ case BGRA_8888: {
+ SkImageInfo info = SkImageInfo::MakeN32Premul(resource()->size.width(),
+ resource()->size.height());
+ if (0 == stride)
+ stride = info.minRowBytes();
+ raster_bitmap_.installPixels(info, mapped_buffer_, stride);
break;
+ }
case LUMINANCE_8:
case RGB_565:
case ETC1:
@@ -936,21 +933,20 @@ void ResourceProvider::SetPixels(ResourceId id,
DCHECK_EQ(Bitmap, resource->type);
DCHECK(resource->allocated);
DCHECK_EQ(RGBA_8888, resource->format);
- SkBitmap src_full;
- src_full.setConfig(
- SkBitmap::kARGB_8888_Config, image_rect.width(), image_rect.height());
- src_full.setPixels(const_cast<uint8_t*>(image));
- SkBitmap src_subset;
- SkIRect sk_source_rect = SkIRect::MakeXYWH(source_rect.x(),
- source_rect.y(),
- source_rect.width(),
- source_rect.height());
- sk_source_rect.offset(-image_rect.x(), -image_rect.y());
- src_full.extractSubset(&src_subset, sk_source_rect);
+ DCHECK(source_rect.x() >= image_rect.x());
+ DCHECK(source_rect.y() >= image_rect.y());
+ DCHECK(source_rect.right() <= image_rect.right());
+ DCHECK(source_rect.bottom() <= image_rect.bottom());
+ SkImageInfo source_info =
+ SkImageInfo::MakeN32Premul(source_rect.width(), source_rect.height());
+ size_t image_row_bytes = image_rect.width() * 4;
+ gfx::Vector2d source_offset = source_rect.origin() - image_rect.origin();
+ image += source_offset.y() * image_row_bytes + source_offset.x() * 4;
ScopedWriteLockSoftware lock(this, id);
SkCanvas* dest = lock.sk_canvas();
- dest->writePixels(src_subset, dest_offset.x(), dest_offset.y());
+ dest->writePixels(
+ source_info, image, image_row_bytes, dest_offset.x(), dest_offset.y());
}
}
@@ -1178,10 +1174,9 @@ ResourceProvider::ScopedWriteLockGL::~ScopedWriteLockGL() {
void ResourceProvider::PopulateSkBitmapWithResource(
SkBitmap* sk_bitmap, const Resource* resource) {
DCHECK_EQ(RGBA_8888, resource->format);
- sk_bitmap->setConfig(SkBitmap::kARGB_8888_Config,
- resource->size.width(),
- resource->size.height());
- sk_bitmap->setPixels(resource->pixels);
+ SkImageInfo info = SkImageInfo::MakeN32Premul(resource->size.width(),
+ resource->size.height());
+ sk_bitmap->installPixels(info, resource->pixels, info.minRowBytes());
}
ResourceProvider::ScopedReadLockSoftware::ScopedReadLockSoftware(
diff --git a/cc/resources/resource_provider_unittest.cc b/cc/resources/resource_provider_unittest.cc
index cca0c5b..b106300 100644
--- a/cc/resources/resource_provider_unittest.cc
+++ b/cc/resources/resource_provider_unittest.cc
@@ -848,11 +848,9 @@ TEST_P(ResourceProviderTest, TransferSoftwareResources) {
ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource(
size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
uint8_t data3[4] = { 6, 7, 8, 9 };
- SkBitmap bitmap3;
- bitmap3.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height());
- bitmap3.setPixels(data3);
+ SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height());
SkCanvas* raster_canvas = child_resource_provider_->MapImageRasterBuffer(id3);
- raster_canvas->writePixels(bitmap3, 0, 0);
+ raster_canvas->writePixels(info, data3, info.minRowBytes(), 0, 0);
child_resource_provider_->UnmapImageRasterBuffer(id3);
scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
@@ -962,7 +960,7 @@ TEST_P(ResourceProviderTest, TransferSoftwareResources) {
expected_ids.insert(id3);
expected_ids.insert(id4);
std::set<ResourceProvider::ResourceId> returned_ids;
- for(unsigned i = 0; i < 4; i++)
+ for (unsigned i = 0; i < 4; i++)
returned_ids.insert(returned_to_child[i].id);
EXPECT_EQ(expected_ids, returned_ids);
EXPECT_FALSE(returned_to_child[0].lost);
@@ -1042,7 +1040,7 @@ TEST_P(ResourceProviderTest, TransferSoftwareResources) {
expected_ids.insert(id3);
expected_ids.insert(id4);
std::set<ResourceProvider::ResourceId> returned_ids;
- for(unsigned i = 0; i < 4; i++)
+ for (unsigned i = 0; i < 4; i++)
returned_ids.insert(returned_to_child[i].id);
EXPECT_EQ(expected_ids, returned_ids);
EXPECT_FALSE(returned_to_child[0].lost);
@@ -2844,8 +2842,7 @@ TEST_P(ResourceProviderTest, PixelBuffer_Bitmap) {
resource_provider->AcquirePixelRasterBuffer(id);
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height());
- bitmap.allocPixels();
+ bitmap.allocN32Pixels(size.width(), size.height());
*(bitmap.getAddr32(0, 0)) = kBadBeef;
SkCanvas* canvas = resource_provider->MapPixelRasterBuffer(id);
canvas->writePixels(bitmap, 0, 0);
@@ -3064,8 +3061,7 @@ TEST_P(ResourceProviderTest, Image_Bitmap) {
size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height());
- bitmap.allocPixels();
+ bitmap.allocN32Pixels(size.width(), size.height());
*(bitmap.getAddr32(0, 0)) = kBadBeef;
SkCanvas* canvas = resource_provider->MapImageRasterBuffer(id);
ASSERT_TRUE(!!canvas);
diff --git a/cc/resources/resource_update_controller_unittest.cc b/cc/resources/resource_update_controller_unittest.cc
index 80e8a76..44e65a5 100644
--- a/cc/resources/resource_update_controller_unittest.cc
+++ b/cc/resources/resource_update_controller_unittest.cc
@@ -108,8 +108,7 @@ class ResourceUpdateControllerTest : public Test {
protected:
virtual void SetUp() {
- bitmap_.setConfig(SkBitmap::kARGB_8888_Config, 300, 150);
- bitmap_.allocPixels();
+ bitmap_.allocN32Pixels(300, 150);
for (int i = 0; i < 4; i++) {
textures_[i] = PrioritizedResource::Create(resource_manager_.get(),
diff --git a/cc/resources/ui_resource_bitmap.cc b/cc/resources/ui_resource_bitmap.cc
index 562e13a..58df9d9 100644
--- a/cc/resources/ui_resource_bitmap.cc
+++ b/cc/resources/ui_resource_bitmap.cc
@@ -13,7 +13,7 @@
namespace cc {
void UIResourceBitmap::Create(const skia::RefPtr<SkPixelRef>& pixel_ref,
- gfx::Size size,
+ const gfx::Size& size,
UIResourceFormat format) {
DCHECK(size.width());
DCHECK(size.height());
@@ -29,7 +29,7 @@ void UIResourceBitmap::Create(const skia::RefPtr<SkPixelRef>& pixel_ref,
}
UIResourceBitmap::UIResourceBitmap(const SkBitmap& skbitmap) {
- DCHECK_EQ(skbitmap.config(), SkBitmap::kARGB_8888_Config);
+ DCHECK_EQ(skbitmap.colorType(), kPMColor_SkColorType);
DCHECK_EQ(skbitmap.width(), skbitmap.rowBytesAsPixels());
DCHECK(skbitmap.isImmutable());
@@ -41,8 +41,19 @@ UIResourceBitmap::UIResourceBitmap(const SkBitmap& skbitmap) {
SetOpaque(skbitmap.isOpaque());
}
+UIResourceBitmap::UIResourceBitmap(const gfx::Size& size, bool is_opaque) {
+ SkAlphaType alphaType = is_opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
+ SkImageInfo info =
+ SkImageInfo::MakeN32(size.width(), size.height(), alphaType);
+ skia::RefPtr<SkPixelRef> pixel_ref = skia::AdoptRef(
+ SkMallocPixelRef::NewAllocate(info, info.minRowBytes(), NULL));
+ pixel_ref->setImmutable();
+ Create(pixel_ref, size, UIResourceBitmap::RGBA8);
+ SetOpaque(is_opaque);
+}
+
UIResourceBitmap::UIResourceBitmap(const skia::RefPtr<SkPixelRef>& pixel_ref,
- gfx::Size size) {
+ const gfx::Size& size) {
Create(pixel_ref, size, UIResourceBitmap::ETC1);
}
diff --git a/cc/resources/ui_resource_bitmap.h b/cc/resources/ui_resource_bitmap.h
index 2cce0b3..b8863d8 100644
--- a/cc/resources/ui_resource_bitmap.h
+++ b/cc/resources/ui_resource_bitmap.h
@@ -44,14 +44,16 @@ class CC_EXPORT UIResourceBitmap {
// User must ensure that |skbitmap| is immutable. The SkBitmap Format should
// be 32-bit RGBA.
explicit UIResourceBitmap(const SkBitmap& skbitmap);
- UIResourceBitmap(const skia::RefPtr<SkPixelRef>& pixel_ref, gfx::Size size);
+ UIResourceBitmap(const gfx::Size& size, bool is_opaque);
+ UIResourceBitmap(const skia::RefPtr<SkPixelRef>& pixel_ref,
+ const gfx::Size& size);
~UIResourceBitmap();
private:
friend class AutoLockUIResourceBitmap;
void Create(const skia::RefPtr<SkPixelRef>& pixel_ref,
- gfx::Size size,
+ const gfx::Size& size,
UIResourceFormat format);
skia::RefPtr<SkPixelRef> pixel_ref_;
diff --git a/cc/test/fake_scoped_ui_resource.cc b/cc/test/fake_scoped_ui_resource.cc
index bf86f54..0631cd8 100644
--- a/cc/test/fake_scoped_ui_resource.cc
+++ b/cc/test/fake_scoped_ui_resource.cc
@@ -11,11 +11,8 @@ namespace cc {
namespace {
UIResourceBitmap CreateMockUIResourceBitmap() {
- SkBitmap skbitmap;
- skbitmap.setConfig(SkBitmap::kARGB_8888_Config, 1, 1);
- skbitmap.allocPixels();
- skbitmap.setImmutable();
- return UIResourceBitmap(skbitmap);
+ bool is_opaque = false;
+ return UIResourceBitmap(gfx::Size(1, 1), is_opaque);
}
} // anonymous namespace
diff --git a/cc/test/layer_tree_json_parser.cc b/cc/test/layer_tree_json_parser.cc
index e543f1d..1634868 100644
--- a/cc/test/layer_tree_json_parser.cc
+++ b/cc/test/layer_tree_json_parser.cc
@@ -69,8 +69,7 @@ scoped_refptr<Layer> ParseTreeFromValue(base::Value* val,
scoped_refptr<NinePatchLayer> nine_patch_layer = NinePatchLayer::Create();
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, image_width, image_height);
- bitmap.allocPixels(NULL, NULL);
+ bitmap.allocN32Pixels(image_width, image_height);
bitmap.setImmutable();
nine_patch_layer->SetBitmap(bitmap);
nine_patch_layer->SetAperture(
diff --git a/cc/test/layer_tree_pixel_test.cc b/cc/test/layer_tree_pixel_test.cc
index 7ae11c3..a282cc4 100644
--- a/cc/test/layer_tree_pixel_test.cc
+++ b/cc/test/layer_tree_pixel_test.cc
@@ -268,12 +268,8 @@ scoped_ptr<SkBitmap> LayerTreePixelTest::CopyTextureMailboxToBitmap(
gl->DeleteTextures(1, &texture_id);
scoped_ptr<SkBitmap> bitmap(new SkBitmap);
- bitmap->setConfig(SkBitmap::kARGB_8888_Config,
- size.width(),
- size.height());
- bitmap->allocPixels();
+ bitmap->allocN32Pixels(size.width(), size.height());
- scoped_ptr<SkAutoLockPixels> lock(new SkAutoLockPixels(*bitmap));
uint8* out_pixels = static_cast<uint8*>(bitmap->getPixels());
size_t row_bytes = size.width() * 4;
@@ -324,7 +320,7 @@ void LayerTreePixelTest::CopyBitmapToTextureMailboxAsTexture(
gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- DCHECK_EQ(SkBitmap::kARGB_8888_Config, bitmap.getConfig());
+ DCHECK_EQ(kPMColor_SkColorType, bitmap.colorType());
{
SkAutoLockPixels lock(bitmap);
diff --git a/cc/test/skia_common.cc b/cc/test/skia_common.cc
index 277a124..7d1c3b8 100644
--- a/cc/test/skia_common.cc
+++ b/cc/test/skia_common.cc
@@ -15,26 +15,19 @@ namespace cc {
void DrawPicture(unsigned char* buffer,
const gfx::Rect& layer_rect,
scoped_refptr<Picture> picture) {
+ SkImageInfo info =
+ SkImageInfo::MakeN32Premul(layer_rect.width(), layer_rect.height());
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config,
- layer_rect.width(),
- layer_rect.height());
- bitmap.setPixels(buffer);
+ bitmap.installPixels(info, buffer, info.minRowBytes());
SkCanvas canvas(bitmap);
canvas.clipRect(gfx::RectToSkRect(layer_rect));
picture->Raster(&canvas, NULL, layer_rect, 1.0f);
}
void CreateBitmap(const gfx::Size& size, const char* uri, SkBitmap* bitmap) {
- SkImageInfo info = {
- size.width(),
- size.height(),
- kPMColor_SkColorType,
- kPremul_SkAlphaType
- };
+ SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height());
- bitmap->setConfig(info);
- bitmap->allocPixels();
+ bitmap->allocPixels(info);
bitmap->pixelRef()->setImmutable();
bitmap->pixelRef()->setURI(uri);
}
diff --git a/cc/test/tiled_layer_test_common.cc b/cc/test/tiled_layer_test_common.cc
index a0dbfc7..430eddf 100644
--- a/cc/test/tiled_layer_test_common.cc
+++ b/cc/test/tiled_layer_test_common.cc
@@ -9,8 +9,7 @@ namespace cc {
FakeLayerUpdater::Resource::Resource(FakeLayerUpdater* layer,
scoped_ptr<PrioritizedResource> texture)
: LayerUpdater::Resource(texture.Pass()), layer_(layer) {
- bitmap_.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
- bitmap_.allocPixels();
+ bitmap_.allocN32Pixels(10, 10);
}
FakeLayerUpdater::Resource::~Resource() {}
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index bcbc6c3..37f2cd5 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -3696,13 +3696,9 @@ TEST_F(LayerTreeHostImplViewportCoveredTest, ViewportCoveredOverhangBitmap) {
host_impl_->SetViewportSize(DipSizeToPixelSize(viewport_size_));
SetupActiveTreeLayers();
- SkBitmap skbitmap;
- skbitmap.setConfig(SkBitmap::kARGB_8888_Config, 2, 2);
- skbitmap.allocPixels();
- skbitmap.setImmutable();
-
// Specify an overhang bitmap to use.
- UIResourceBitmap ui_resource_bitmap(skbitmap);
+ bool is_opaque = false;
+ UIResourceBitmap ui_resource_bitmap(gfx::Size(2, 2), is_opaque);
ui_resource_bitmap.SetWrapMode(UIResourceBitmap::REPEAT);
UIResourceId ui_resource_id = 12345;
host_impl_->CreateUIResource(ui_resource_id, ui_resource_bitmap);
@@ -5632,13 +5628,9 @@ TEST_F(LayerTreeHostImplTest, UIResourceManagement) {
EXPECT_EQ(0u, context3d->NumTextures());
- SkBitmap skbitmap;
- skbitmap.setConfig(SkBitmap::kARGB_8888_Config, 1, 1);
- skbitmap.allocPixels();
- skbitmap.setImmutable();
-
UIResourceId ui_resource_id = 1;
- UIResourceBitmap bitmap(skbitmap);
+ bool is_opaque = false;
+ UIResourceBitmap bitmap(gfx::Size(1, 1), is_opaque);
host_impl_->CreateUIResource(ui_resource_id, bitmap);
EXPECT_EQ(1u, context3d->NumTextures());
ResourceProvider::ResourceId id1 =
diff --git a/cc/trees/layer_tree_host_pixeltest_masks.cc b/cc/trees/layer_tree_host_pixeltest_masks.cc
index 08c16f1..913d63f 100644
--- a/cc/trees/layer_tree_host_pixeltest_masks.cc
+++ b/cc/trees/layer_tree_host_pixeltest_masks.cc
@@ -78,8 +78,7 @@ TEST_F(LayerTreeHostMasksPixelTest, ImageMaskOfLayer) {
mask->SetBounds(gfx::Size(100, 100));
SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400);
- bitmap.allocPixels();
+ bitmap.allocN32Pixels(400, 400);
SkCanvas canvas(bitmap);
canvas.scale(SkIntToScalar(4), SkIntToScalar(4));
MaskContentLayerClient client;
diff --git a/cc/trees/layer_tree_host_pixeltest_readback.cc b/cc/trees/layer_tree_host_pixeltest_readback.cc
index e784535..e8ad466 100644
--- a/cc/trees/layer_tree_host_pixeltest_readback.cc
+++ b/cc/trees/layer_tree_host_pixeltest_readback.cc
@@ -1109,15 +1109,10 @@ class LayerTreeHostReadbackViaCompositeAndReadbackPixelTest
device_viewport_copy_rect.Intersect(device_viewport_copy_subrect_);
scoped_ptr<SkBitmap> bitmap(new SkBitmap);
- bitmap->setConfig(SkBitmap::kARGB_8888_Config,
- device_viewport_copy_rect.width(),
- device_viewport_copy_rect.height());
- bitmap->allocPixels();
- {
- scoped_ptr<SkAutoLockPixels> lock(new SkAutoLockPixels(*bitmap));
- layer_tree_host()->CompositeAndReadback(bitmap->getPixels(),
- device_viewport_copy_rect);
- }
+ bitmap->allocN32Pixels(device_viewport_copy_rect.width(),
+ device_viewport_copy_rect.height());
+ layer_tree_host()->CompositeAndReadback(bitmap->getPixels(),
+ device_viewport_copy_rect);
result_bitmap_ = bitmap.Pass();
EndTest();
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index f94cfd5..785f7d1 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -2043,8 +2043,7 @@ class EvictionTestLayer : public Layer {
texture_ = PrioritizedResource::Create(
layer_tree_host()->contents_texture_manager());
texture_->SetDimensions(gfx::Size(10, 10), RGBA_8888);
- bitmap_.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
- bitmap_.allocPixels();
+ bitmap_.allocN32Pixels(10, 10);
}
scoped_ptr<PrioritizedResource> texture_;