| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/resources/resource_provider.h" | 5 #include "cc/resources/resource_provider.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 texture_pool(0), | 389 texture_pool(0), |
| 390 wrap_mode(wrap_mode), | 390 wrap_mode(wrap_mode), |
| 391 hint(TextureUsageAny), | 391 hint(TextureUsageAny), |
| 392 type(Bitmap), | 392 type(Bitmap), |
| 393 format(RGBA_8888), | 393 format(RGBA_8888), |
| 394 shared_bitmap_id(bitmap_id), | 394 shared_bitmap_id(bitmap_id), |
| 395 shared_bitmap(NULL) { | 395 shared_bitmap(NULL) { |
| 396 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT); | 396 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT); |
| 397 } | 397 } |
| 398 | 398 |
| 399 ResourceProvider::RasterBuffer::RasterBuffer( | |
| 400 const Resource* resource, | |
| 401 ResourceProvider* resource_provider) | |
| 402 : resource_(resource), | |
| 403 resource_provider_(resource_provider), | |
| 404 locked_canvas_(NULL), | |
| 405 canvas_save_count_(0) { | |
| 406 DCHECK(resource_); | |
| 407 DCHECK(resource_provider_); | |
| 408 } | |
| 409 | |
| 410 ResourceProvider::RasterBuffer::~RasterBuffer() {} | |
| 411 | |
| 412 SkCanvas* ResourceProvider::RasterBuffer::LockForWrite() { | |
| 413 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | |
| 414 "ResourceProvider::RasterBuffer::LockForWrite"); | |
| 415 | |
| 416 DCHECK(!locked_canvas_); | |
| 417 | |
| 418 locked_canvas_ = DoLockForWrite(); | |
| 419 canvas_save_count_ = locked_canvas_ ? locked_canvas_->save() : 0; | |
| 420 return locked_canvas_; | |
| 421 } | |
| 422 | |
| 423 bool ResourceProvider::RasterBuffer::UnlockForWrite() { | |
| 424 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | |
| 425 "ResourceProvider::RasterBuffer::UnlockForWrite"); | |
| 426 | |
| 427 if (locked_canvas_) { | |
| 428 locked_canvas_->restoreToCount(canvas_save_count_); | |
| 429 locked_canvas_ = NULL; | |
| 430 } | |
| 431 return DoUnlockForWrite(); | |
| 432 } | |
| 433 | |
| 434 ResourceProvider::GpuRasterBuffer::GpuRasterBuffer( | 399 ResourceProvider::GpuRasterBuffer::GpuRasterBuffer( |
| 435 const Resource* resource, | 400 const Resource* resource, |
| 436 ResourceProvider* resource_provider, | 401 ResourceProvider* resource_provider, |
| 437 bool use_distance_field_text) | 402 bool use_distance_field_text) |
| 438 : RasterBuffer(resource, resource_provider), | 403 : resource_(resource), |
| 404 resource_provider_(resource_provider), |
| 405 locked_canvas_(NULL), |
| 406 canvas_save_count_(0), |
| 439 surface_generation_id_(0u), | 407 surface_generation_id_(0u), |
| 440 use_distance_field_text_(use_distance_field_text) { | 408 use_distance_field_text_(use_distance_field_text) { |
| 441 } | 409 } |
| 442 | 410 |
| 443 ResourceProvider::GpuRasterBuffer::~GpuRasterBuffer() { | 411 ResourceProvider::GpuRasterBuffer::~GpuRasterBuffer() { |
| 444 } | 412 } |
| 445 | 413 |
| 446 SkCanvas* ResourceProvider::GpuRasterBuffer::DoLockForWrite() { | 414 void ResourceProvider::GpuRasterBuffer::LockForWrite() { |
| 415 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 416 "ResourceProvider::GpuRasterBuffer::LockForWrite"); |
| 417 |
| 418 DCHECK(!locked_canvas_); |
| 419 |
| 447 if (!surface_) | 420 if (!surface_) |
| 448 surface_ = CreateSurface(); | 421 surface_ = CreateSurface(); |
| 449 surface_generation_id_ = surface_ ? surface_->generationID() : 0u; | 422 surface_generation_id_ = surface_ ? surface_->generationID() : 0u; |
| 450 return surface_ ? surface_->getCanvas() : NULL; | |
| 451 } | 423 } |
| 452 | 424 |
| 453 bool ResourceProvider::GpuRasterBuffer::DoUnlockForWrite() { | 425 bool ResourceProvider::GpuRasterBuffer::UnlockForWrite() { |
| 426 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 427 "ResourceProvider::GpuRasterBuffer::UnlockForWrite"); |
| 428 |
| 429 DCHECK(!locked_canvas_); |
| 430 |
| 454 // generationID returns a non-zero, unique value corresponding to the content | 431 // generationID returns a non-zero, unique value corresponding to the content |
| 455 // of surface. Hence, a change since DoLockForWrite was called means the | 432 // of surface. Hence, a change since LockForWrite was called means the surface |
| 456 // surface has changed. | 433 // has changed. |
| 457 return surface_ ? surface_generation_id_ != surface_->generationID() : false; | 434 return surface_ ? surface_generation_id_ != surface_->generationID() : false; |
| 458 } | 435 } |
| 459 | 436 |
| 437 SkCanvas* ResourceProvider::GpuRasterBuffer::AcquireSkCanvas() { |
| 438 // Note that this function is called from a worker thread. |
| 439 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 440 "ResourceProvider::GpuRasterBuffer::AcquireSkCanvas"); |
| 441 |
| 442 DCHECK(!locked_canvas_); |
| 443 locked_canvas_ = surface_ ? surface_->getCanvas() : NULL; |
| 444 canvas_save_count_ = locked_canvas_ ? locked_canvas_->save() : 0; |
| 445 return locked_canvas_; |
| 446 } |
| 447 |
| 448 void ResourceProvider::GpuRasterBuffer::ReleaseSkCanvas() { |
| 449 // Note that this function is called from a worker thread. |
| 450 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 451 "ResourceProvider::GpuRasterBuffer::ReleaseSkCanvas"); |
| 452 |
| 453 if (locked_canvas_) { |
| 454 locked_canvas_->restoreToCount(canvas_save_count_); |
| 455 locked_canvas_ = NULL; |
| 456 } |
| 457 } |
| 458 |
| 460 skia::RefPtr<SkSurface> ResourceProvider::GpuRasterBuffer::CreateSurface() { | 459 skia::RefPtr<SkSurface> ResourceProvider::GpuRasterBuffer::CreateSurface() { |
| 461 DCHECK_EQ(GLTexture, resource()->type); | 460 DCHECK_EQ(GLTexture, resource()->type); |
| 462 DCHECK(resource()->gl_id); | 461 DCHECK(resource()->gl_id); |
| 463 | 462 |
| 464 class GrContext* gr_context = resource_provider()->GrContext(); | 463 class GrContext* gr_context = resource_provider()->GrContext(); |
| 465 // TODO(alokp): Implement TestContextProvider::GrContext(). | 464 // TODO(alokp): Implement TestContextProvider::GrContext(). |
| 466 if (!gr_context) | 465 if (!gr_context) |
| 467 return skia::RefPtr<SkSurface>(); | 466 return skia::RefPtr<SkSurface>(); |
| 468 | 467 |
| 469 GrBackendTextureDesc desc; | 468 GrBackendTextureDesc desc; |
| 470 desc.fFlags = kRenderTarget_GrBackendTextureFlag; | 469 desc.fFlags = kRenderTarget_GrBackendTextureFlag; |
| 471 desc.fWidth = resource()->size.width(); | 470 desc.fWidth = resource()->size.width(); |
| 472 desc.fHeight = resource()->size.height(); | 471 desc.fHeight = resource()->size.height(); |
| 473 desc.fConfig = ToGrPixelConfig(resource()->format); | 472 desc.fConfig = ToGrPixelConfig(resource()->format); |
| 474 desc.fOrigin = kTopLeft_GrSurfaceOrigin; | 473 desc.fOrigin = kTopLeft_GrSurfaceOrigin; |
| 475 desc.fTextureHandle = resource()->gl_id; | 474 desc.fTextureHandle = resource()->gl_id; |
| 476 skia::RefPtr<GrTexture> gr_texture = | 475 skia::RefPtr<GrTexture> gr_texture = |
| 477 skia::AdoptRef(gr_context->wrapBackendTexture(desc)); | 476 skia::AdoptRef(gr_context->wrapBackendTexture(desc)); |
| 478 SkSurface::TextRenderMode text_render_mode = | 477 SkSurface::TextRenderMode text_render_mode = |
| 479 use_distance_field_text_ ? SkSurface::kDistanceField_TextRenderMode | 478 use_distance_field_text_ ? SkSurface::kDistanceField_TextRenderMode |
| 480 : SkSurface::kStandard_TextRenderMode; | 479 : SkSurface::kStandard_TextRenderMode; |
| 481 return skia::AdoptRef(SkSurface::NewRenderTargetDirect( | 480 return skia::AdoptRef(SkSurface::NewRenderTargetDirect( |
| 482 gr_texture->asRenderTarget(), text_render_mode)); | 481 gr_texture->asRenderTarget(), text_render_mode)); |
| 483 } | 482 } |
| 484 | 483 |
| 485 ResourceProvider::BitmapRasterBuffer::BitmapRasterBuffer( | 484 ResourceProvider::BitmapRasterBuffer::BitmapRasterBuffer( |
| 486 const Resource* resource, | 485 const Resource* resource, |
| 487 ResourceProvider* resource_provider) | 486 ResourceProvider* resource_provider) |
| 488 : RasterBuffer(resource, resource_provider), | 487 : resource_(resource), |
| 488 resource_provider_(resource_provider), |
| 489 canvas_save_count_(0), |
| 489 mapped_buffer_(NULL), | 490 mapped_buffer_(NULL), |
| 490 raster_bitmap_generation_id_(0u) {} | 491 raster_bitmap_generation_id_(0u), |
| 492 raster_bitmap_changed_(false), |
| 493 stride_(0) { |
| 494 } |
| 491 | 495 |
| 492 ResourceProvider::BitmapRasterBuffer::~BitmapRasterBuffer() {} | 496 ResourceProvider::BitmapRasterBuffer::~BitmapRasterBuffer() {} |
| 493 | 497 |
| 494 SkCanvas* ResourceProvider::BitmapRasterBuffer::DoLockForWrite() { | 498 void ResourceProvider::BitmapRasterBuffer::LockForWrite() { |
| 499 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 500 "ResourceProvider::BitmapRasterBuffer::LockForWrite"); |
| 501 |
| 495 DCHECK(!mapped_buffer_); | 502 DCHECK(!mapped_buffer_); |
| 496 DCHECK(!raster_canvas_); | 503 DCHECK(!raster_canvas_); |
| 497 | 504 |
| 498 int stride = 0; | 505 stride_ = 0; |
| 499 mapped_buffer_ = MapBuffer(&stride); | 506 mapped_buffer_ = MapBuffer(&stride_); |
| 507 raster_bitmap_changed_ = false; |
| 508 } |
| 509 |
| 510 bool ResourceProvider::BitmapRasterBuffer::UnlockForWrite() { |
| 511 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 512 "ResourceProvider::BitmapRasterBuffer::UnlockForWrite"); |
| 513 |
| 514 DCHECK(!raster_canvas_); |
| 515 |
| 516 UnmapBuffer(); |
| 517 mapped_buffer_ = NULL; |
| 518 return raster_bitmap_changed_; |
| 519 } |
| 520 |
| 521 SkCanvas* ResourceProvider::BitmapRasterBuffer::AcquireSkCanvas() { |
| 522 // Note that this function is called from a worker thread. |
| 523 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 524 "ResourceProvider::BitmapRasterBuffer::AcquireSkCanvas"); |
| 525 |
| 500 if (!mapped_buffer_) | 526 if (!mapped_buffer_) |
| 501 return NULL; | 527 return NULL; |
| 502 | 528 |
| 503 switch (resource()->format) { | 529 switch (resource()->format) { |
| 504 case RGBA_4444: | 530 case RGBA_4444: |
| 505 // Use the default stride if we will eventually convert this | 531 // Use the default stride if we will eventually convert this |
| 506 // bitmap to 4444. | 532 // bitmap to 4444. |
| 507 raster_bitmap_.allocN32Pixels(resource()->size.width(), | 533 raster_bitmap_.allocN32Pixels(resource()->size.width(), |
| 508 resource()->size.height()); | 534 resource()->size.height()); |
| 509 break; | 535 break; |
| 510 case RGBA_8888: | 536 case RGBA_8888: |
| 511 case BGRA_8888: { | 537 case BGRA_8888: { |
| 512 SkImageInfo info = SkImageInfo::MakeN32Premul(resource()->size.width(), | 538 SkImageInfo info = SkImageInfo::MakeN32Premul(resource()->size.width(), |
| 513 resource()->size.height()); | 539 resource()->size.height()); |
| 514 if (0 == stride) | 540 if (0 == stride_) |
| 515 stride = info.minRowBytes(); | 541 stride_ = info.minRowBytes(); |
| 516 raster_bitmap_.installPixels(info, mapped_buffer_, stride); | 542 raster_bitmap_.installPixels(info, mapped_buffer_, stride_); |
| 517 break; | 543 break; |
| 518 } | 544 } |
| 519 case LUMINANCE_8: | 545 case LUMINANCE_8: |
| 520 case RGB_565: | 546 case RGB_565: |
| 521 case ETC1: | 547 case ETC1: |
| 522 NOTREACHED(); | 548 NOTREACHED(); |
| 523 break; | 549 break; |
| 524 } | 550 } |
| 551 |
| 552 raster_bitmap_generation_id_ = raster_bitmap_.getGenerationID(); |
| 553 |
| 554 DCHECK(!raster_canvas_); |
| 525 raster_canvas_ = skia::AdoptRef(new SkCanvas(raster_bitmap_)); | 555 raster_canvas_ = skia::AdoptRef(new SkCanvas(raster_bitmap_)); |
| 526 raster_bitmap_generation_id_ = raster_bitmap_.getGenerationID(); | 556 canvas_save_count_ = raster_canvas_->save(); |
| 527 return raster_canvas_.get(); | 557 return raster_canvas_.get(); |
| 528 } | 558 } |
| 529 | 559 |
| 530 bool ResourceProvider::BitmapRasterBuffer::DoUnlockForWrite() { | 560 void ResourceProvider::BitmapRasterBuffer::ReleaseSkCanvas() { |
| 531 raster_canvas_.clear(); | 561 // Note that this function is called from a worker thread. |
| 562 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 563 "ResourceProvider::BitmapRasterBuffer::ReleaseSkCanvas"); |
| 564 |
| 565 if (raster_canvas_) { |
| 566 raster_canvas_->restoreToCount(canvas_save_count_); |
| 567 raster_canvas_.clear(); |
| 568 } |
| 532 | 569 |
| 533 // getGenerationID returns a non-zero, unique value corresponding to the | 570 // getGenerationID returns a non-zero, unique value corresponding to the |
| 534 // pixels in bitmap. Hence, a change since DoLockForWrite was called means the | 571 // pixels in bitmap. Hence, a change since LockForWrite was called means the |
| 535 // bitmap has changed. | 572 // bitmap has changed. |
| 536 bool raster_bitmap_changed = | 573 raster_bitmap_changed_ = |
| 537 raster_bitmap_generation_id_ != raster_bitmap_.getGenerationID(); | 574 raster_bitmap_generation_id_ != raster_bitmap_.getGenerationID(); |
| 538 | 575 if (raster_bitmap_changed_) { |
| 539 if (raster_bitmap_changed) { | |
| 540 SkColorType buffer_colorType = | 576 SkColorType buffer_colorType = |
| 541 ResourceFormatToSkColorType(resource()->format); | 577 ResourceFormatToSkColorType(resource()->format); |
| 542 if (mapped_buffer_ && (buffer_colorType != raster_bitmap_.colorType())) | 578 if (mapped_buffer_ && (buffer_colorType != raster_bitmap_.colorType())) |
| 543 CopyBitmap(raster_bitmap_, mapped_buffer_, buffer_colorType); | 579 CopyBitmap(raster_bitmap_, mapped_buffer_, buffer_colorType); |
| 544 } | 580 } |
| 545 raster_bitmap_.reset(); | 581 raster_bitmap_.reset(); |
| 546 | |
| 547 UnmapBuffer(); | |
| 548 mapped_buffer_ = NULL; | |
| 549 return raster_bitmap_changed; | |
| 550 } | 582 } |
| 551 | 583 |
| 552 ResourceProvider::ImageRasterBuffer::ImageRasterBuffer( | 584 ResourceProvider::ImageRasterBuffer::ImageRasterBuffer( |
| 553 const Resource* resource, | 585 const Resource* resource, |
| 554 ResourceProvider* resource_provider) | 586 ResourceProvider* resource_provider) |
| 555 : BitmapRasterBuffer(resource, resource_provider) {} | 587 : BitmapRasterBuffer(resource, resource_provider) {} |
| 556 | 588 |
| 557 ResourceProvider::ImageRasterBuffer::~ImageRasterBuffer() {} | 589 ResourceProvider::ImageRasterBuffer::~ImageRasterBuffer() {} |
| 558 | 590 |
| 559 uint8_t* ResourceProvider::ImageRasterBuffer::MapBuffer(int* stride) { | 591 uint8_t* ResourceProvider::ImageRasterBuffer::MapBuffer(int* stride) { |
| (...skipping 1160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1720 if (!to_return.empty()) | 1752 if (!to_return.empty()) |
| 1721 child_info->return_callback.Run(to_return); | 1753 child_info->return_callback.Run(to_return); |
| 1722 | 1754 |
| 1723 if (child_info->marked_for_deletion && | 1755 if (child_info->marked_for_deletion && |
| 1724 child_info->parent_to_child_map.empty()) { | 1756 child_info->parent_to_child_map.empty()) { |
| 1725 DCHECK(child_info->child_to_parent_map.empty()); | 1757 DCHECK(child_info->child_to_parent_map.empty()); |
| 1726 children_.erase(child_it); | 1758 children_.erase(child_it); |
| 1727 } | 1759 } |
| 1728 } | 1760 } |
| 1729 | 1761 |
| 1730 SkCanvas* ResourceProvider::MapGpuRasterBuffer(ResourceId id) { | 1762 RasterBuffer* ResourceProvider::AcquireGpuRasterBuffer(ResourceId id) { |
| 1731 // Resource needs to be locked for write since GpuRasterBuffer writes | 1763 // Resource needs to be locked for write since GpuRasterBuffer writes |
| 1732 // directly to it. | 1764 // directly to it. |
| 1733 LockForWrite(id); | 1765 LockForWrite(id); |
| 1734 Resource* resource = GetResource(id); | 1766 Resource* resource = GetResource(id); |
| 1735 if (!resource->gpu_raster_buffer.get()) { | 1767 if (!resource->gpu_raster_buffer.get()) { |
| 1736 resource->gpu_raster_buffer.reset( | 1768 resource->gpu_raster_buffer.reset( |
| 1737 new GpuRasterBuffer(resource, this, use_distance_field_text_)); | 1769 new GpuRasterBuffer(resource, this, use_distance_field_text_)); |
| 1738 } | 1770 } |
| 1739 return resource->gpu_raster_buffer->LockForWrite(); | 1771 resource->gpu_raster_buffer->LockForWrite(); |
| 1772 return resource->gpu_raster_buffer.get(); |
| 1740 } | 1773 } |
| 1741 | 1774 |
| 1742 void ResourceProvider::UnmapGpuRasterBuffer(ResourceId id) { | 1775 void ResourceProvider::ReleaseGpuRasterBuffer(ResourceId id) { |
| 1743 Resource* resource = GetResource(id); | 1776 Resource* resource = GetResource(id); |
| 1744 DCHECK(resource->gpu_raster_buffer.get()); | 1777 DCHECK(resource->gpu_raster_buffer.get()); |
| 1745 resource->gpu_raster_buffer->UnlockForWrite(); | 1778 resource->gpu_raster_buffer->UnlockForWrite(); |
| 1746 UnlockForWrite(id); | 1779 UnlockForWrite(id); |
| 1747 } | 1780 } |
| 1748 | 1781 |
| 1749 SkCanvas* ResourceProvider::MapImageRasterBuffer(ResourceId id) { | 1782 RasterBuffer* ResourceProvider::AcquireImageRasterBuffer(ResourceId id) { |
| 1750 Resource* resource = GetResource(id); | 1783 Resource* resource = GetResource(id); |
| 1751 AcquireImage(resource); | 1784 AcquireImage(resource); |
| 1752 if (!resource->image_raster_buffer.get()) | 1785 if (!resource->image_raster_buffer.get()) |
| 1753 resource->image_raster_buffer.reset(new ImageRasterBuffer(resource, this)); | 1786 resource->image_raster_buffer.reset(new ImageRasterBuffer(resource, this)); |
| 1754 return resource->image_raster_buffer->LockForWrite(); | 1787 resource->image_raster_buffer->LockForWrite(); |
| 1788 return resource->image_raster_buffer.get(); |
| 1755 } | 1789 } |
| 1756 | 1790 |
| 1757 bool ResourceProvider::UnmapImageRasterBuffer(ResourceId id) { | 1791 bool ResourceProvider::ReleaseImageRasterBuffer(ResourceId id) { |
| 1758 Resource* resource = GetResource(id); | 1792 Resource* resource = GetResource(id); |
| 1759 resource->dirty_image = true; | 1793 resource->dirty_image = true; |
| 1760 return resource->image_raster_buffer->UnlockForWrite(); | 1794 return resource->image_raster_buffer->UnlockForWrite(); |
| 1761 } | 1795 } |
| 1762 | 1796 |
| 1763 void ResourceProvider::AcquirePixelRasterBuffer(ResourceId id) { | 1797 void ResourceProvider::AcquirePixelRasterBuffer(ResourceId id) { |
| 1764 Resource* resource = GetResource(id); | 1798 Resource* resource = GetResource(id); |
| 1765 AcquirePixelBuffer(resource); | 1799 AcquirePixelBuffer(resource); |
| 1766 resource->pixel_raster_buffer.reset(new PixelRasterBuffer(resource, this)); | 1800 resource->pixel_raster_buffer.reset(new PixelRasterBuffer(resource, this)); |
| 1767 } | 1801 } |
| 1768 | 1802 |
| 1769 void ResourceProvider::ReleasePixelRasterBuffer(ResourceId id) { | 1803 void ResourceProvider::ReleasePixelRasterBuffer(ResourceId id) { |
| 1770 Resource* resource = GetResource(id); | 1804 Resource* resource = GetResource(id); |
| 1771 resource->pixel_raster_buffer.reset(); | 1805 resource->pixel_raster_buffer.reset(); |
| 1772 ReleasePixelBuffer(resource); | 1806 ReleasePixelBuffer(resource); |
| 1773 } | 1807 } |
| 1774 | 1808 |
| 1775 SkCanvas* ResourceProvider::MapPixelRasterBuffer(ResourceId id) { | 1809 RasterBuffer* ResourceProvider::MapPixelRasterBuffer(ResourceId id) { |
| 1776 Resource* resource = GetResource(id); | 1810 Resource* resource = GetResource(id); |
| 1777 DCHECK(resource->pixel_raster_buffer.get()); | 1811 DCHECK(resource->pixel_raster_buffer.get()); |
| 1778 return resource->pixel_raster_buffer->LockForWrite(); | 1812 resource->pixel_raster_buffer->LockForWrite(); |
| 1813 return resource->pixel_raster_buffer.get(); |
| 1779 } | 1814 } |
| 1780 | 1815 |
| 1781 bool ResourceProvider::UnmapPixelRasterBuffer(ResourceId id) { | 1816 bool ResourceProvider::UnmapPixelRasterBuffer(ResourceId id) { |
| 1782 Resource* resource = GetResource(id); | 1817 Resource* resource = GetResource(id); |
| 1783 DCHECK(resource->pixel_raster_buffer.get()); | 1818 DCHECK(resource->pixel_raster_buffer.get()); |
| 1784 return resource->pixel_raster_buffer->UnlockForWrite(); | 1819 return resource->pixel_raster_buffer->UnlockForWrite(); |
| 1785 } | 1820 } |
| 1786 | 1821 |
| 1787 void ResourceProvider::AcquirePixelBuffer(Resource* resource) { | 1822 void ResourceProvider::AcquirePixelBuffer(Resource* resource) { |
| 1788 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 1823 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2252 ContextProvider* context_provider = output_surface_->context_provider(); | 2287 ContextProvider* context_provider = output_surface_->context_provider(); |
| 2253 return context_provider ? context_provider->ContextGL() : NULL; | 2288 return context_provider ? context_provider->ContextGL() : NULL; |
| 2254 } | 2289 } |
| 2255 | 2290 |
| 2256 class GrContext* ResourceProvider::GrContext() const { | 2291 class GrContext* ResourceProvider::GrContext() const { |
| 2257 ContextProvider* context_provider = output_surface_->context_provider(); | 2292 ContextProvider* context_provider = output_surface_->context_provider(); |
| 2258 return context_provider ? context_provider->GrContext() : NULL; | 2293 return context_provider ? context_provider->GrContext() : NULL; |
| 2259 } | 2294 } |
| 2260 | 2295 |
| 2261 } // namespace cc | 2296 } // namespace cc |
| OLD | NEW |