Index: cc/raster/zero_copy_tile_task_worker_pool.cc |
diff --git a/cc/raster/zero_copy_tile_task_worker_pool.cc b/cc/raster/zero_copy_tile_task_worker_pool.cc |
index 5a1dc23058b59ad4b867fb28222bfdaf4b9a76d0..31324a6b5377613ea9ac5e69a9d364ebc3491203 100644 |
--- a/cc/raster/zero_copy_tile_task_worker_pool.cc |
+++ b/cc/raster/zero_copy_tile_task_worker_pool.cc |
@@ -27,10 +27,12 @@ class RasterBufferImpl : public RasterBuffer { |
void Playback(const RasterSource* raster_source, |
const gfx::Rect& rect, |
float scale) override { |
- gfx::GpuMemoryBuffer* gpu_memory_buffer = lock_.GetGpuMemoryBuffer(); |
- if (!gpu_memory_buffer) |
- return; |
- |
+ if (!lock_.gpu_memory_buffer()) { |
+ bool persistent = false; // No partial tile support here. |
+ if (!lock_.AllocateGpuMemoryBuffer(persistent)) |
+ return; |
+ } |
+ gfx::GpuMemoryBuffer* gpu_memory_buffer = lock_.gpu_memory_buffer(); |
void* data = NULL; |
bool rv = gpu_memory_buffer->Map(&data); |
DCHECK(rv); |
@@ -38,7 +40,7 @@ class RasterBufferImpl : public RasterBuffer { |
gpu_memory_buffer->GetStride(&stride); |
TileTaskWorkerPool::PlaybackToMemory(data, resource_->format(), |
resource_->size(), stride, |
- raster_source, rect, scale); |
+ raster_source, rect, rect, scale); |
gpu_memory_buffer->Unmap(); |
} |
@@ -176,9 +178,9 @@ ResourceFormat ZeroCopyTileTaskWorkerPool::GetResourceFormat() { |
} |
scoped_ptr<RasterBuffer> ZeroCopyTileTaskWorkerPool::AcquireBufferForRaster( |
- const Resource* resource) { |
+ const TileTaskData& data) { |
return make_scoped_ptr<RasterBuffer>( |
- new RasterBufferImpl(resource_provider_, resource)); |
+ new RasterBufferImpl(resource_provider_, data.resource)); |
} |
void ZeroCopyTileTaskWorkerPool::ReleaseBufferForRaster( |