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

Unified Diff: cc/raster/zero_copy_tile_task_worker_pool.cc

Issue 1139063002: cc: Partial tile update for one-copy raster. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: monocle: tilemanagerconsistency Created 5 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
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(

Powered by Google App Engine
This is Rietveld 408576698