Index: cc/resources/resource_provider.cc |
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc |
index 848524f014356e3b2bb49e947ed0fed61aa9ddb0..e9082bbd01dee37b6251b13d50a9623cb7a82892 100644 |
--- a/cc/resources/resource_provider.cc |
+++ b/cc/resources/resource_provider.cc |
@@ -217,8 +217,6 @@ ResourceProvider::Resource::Resource(GLuint texture_id, |
locked_for_write(false), |
lost(false), |
marked_for_deletion(false), |
- pending_set_pixels(false), |
- set_pixels_completion_forced(false), |
allocated(false), |
read_lock_fences_enabled(false), |
has_shared_bitmap_id(false), |
@@ -260,8 +258,6 @@ ResourceProvider::Resource::Resource(uint8_t* pixels, |
locked_for_write(false), |
lost(false), |
marked_for_deletion(false), |
- pending_set_pixels(false), |
- set_pixels_completion_forced(false), |
allocated(false), |
read_lock_fences_enabled(false), |
has_shared_bitmap_id(!!bitmap), |
@@ -304,8 +300,6 @@ ResourceProvider::Resource::Resource(const SharedBitmapId& bitmap_id, |
locked_for_write(false), |
lost(false), |
marked_for_deletion(false), |
- pending_set_pixels(false), |
- set_pixels_completion_forced(false), |
allocated(false), |
read_lock_fences_enabled(false), |
has_shared_bitmap_id(true), |
@@ -545,7 +539,7 @@ void ResourceProvider::DeleteResource(ResourceId id) { |
Resource* resource = &it->second; |
DCHECK(!resource->marked_for_deletion); |
DCHECK_EQ(resource->imported_count, 0); |
- DCHECK(resource->pending_set_pixels || !resource->locked_for_write); |
+ DCHECK(!resource->locked_for_write); |
if (resource->exported_count > 0 || resource->lock_for_read_count > 0 || |
!ReadLockFenceHasPassed(resource)) { |
@@ -669,7 +663,6 @@ void ResourceProvider::CopyToResource(ResourceId id, |
dest.writePixels(source_info, image, image_stride, 0, 0); |
} else { |
DCHECK(resource->gl_id); |
- DCHECK(!resource->pending_set_pixels); |
DCHECK_EQ(resource->target, static_cast<GLenum>(GL_TEXTURE_2D)); |
GLES2Interface* gl = ContextGL(); |
DCHECK(gl); |
@@ -707,10 +700,8 @@ ResourceProvider::Resource* ResourceProvider::GetResource(ResourceId id) { |
const ResourceProvider::Resource* ResourceProvider::LockForRead(ResourceId id) { |
Resource* resource = GetResource(id); |
- DCHECK(!resource->locked_for_write || |
- resource->set_pixels_completion_forced) << |
- "locked for write: " << resource->locked_for_write << |
- " pixels completion forced: " << resource->set_pixels_completion_forced; |
+ DCHECK(!resource->locked_for_write) << "locked for write: " |
+ << resource->locked_for_write; |
DCHECK_EQ(resource->exported_count, 0); |
// Uninitialized! Call SetPixels or LockForWrite first. |
DCHECK(resource->allocated); |
@@ -1467,106 +1458,6 @@ void ResourceProvider::DeleteAndReturnUnusedResourcesToChild( |
} |
} |
-void ResourceProvider::AcquirePixelBuffer(ResourceId id) { |
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
- "ResourceProvider::AcquirePixelBuffer"); |
- |
- Resource* resource = GetResource(id); |
- DCHECK(resource->origin == Resource::INTERNAL); |
- DCHECK_EQ(resource->exported_count, 0); |
- DCHECK(!resource->image_id); |
- DCHECK_NE(ETC1, resource->format); |
- |
- DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, resource->type); |
- GLES2Interface* gl = ContextGL(); |
- DCHECK(gl); |
- if (!resource->gl_pixel_buffer_id) |
- resource->gl_pixel_buffer_id = buffer_id_allocator_->NextId(); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
- resource->gl_pixel_buffer_id); |
- size_t resource_bytes = ResourceUtil::UncheckedSizeInBytesAligned<size_t>( |
- resource->size, resource->format); |
- gl->BufferData(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, resource_bytes, NULL, |
- GL_DYNAMIC_DRAW); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, 0); |
-} |
- |
-void ResourceProvider::ReleasePixelBuffer(ResourceId id) { |
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
- "ResourceProvider::ReleasePixelBuffer"); |
- |
- Resource* resource = GetResource(id); |
- DCHECK(resource->origin == Resource::INTERNAL); |
- DCHECK_EQ(resource->exported_count, 0); |
- DCHECK(!resource->image_id); |
- |
- // The pixel buffer can be released while there is a pending "set pixels" |
- // if completion has been forced. Any shared memory associated with this |
- // pixel buffer will not be freed until the waitAsyncTexImage2DCHROMIUM |
- // command has been processed on the service side. It is also safe to |
- // reuse any query id associated with this resource before they complete |
- // as each new query has a unique submit count. |
- if (resource->pending_set_pixels) { |
- DCHECK(resource->set_pixels_completion_forced); |
- resource->pending_set_pixels = false; |
- resource->locked_for_write = false; |
- } |
- |
- DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, resource->type); |
- if (!resource->gl_pixel_buffer_id) |
- return; |
- GLES2Interface* gl = ContextGL(); |
- DCHECK(gl); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
- resource->gl_pixel_buffer_id); |
- gl->BufferData( |
- GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, 0, NULL, GL_DYNAMIC_DRAW); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, 0); |
-} |
- |
-uint8_t* ResourceProvider::MapPixelBuffer(ResourceId id, int* stride) { |
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
- "ResourceProvider::MapPixelBuffer"); |
- |
- Resource* resource = GetResource(id); |
- DCHECK(resource->origin == Resource::INTERNAL); |
- DCHECK_EQ(resource->exported_count, 0); |
- DCHECK(!resource->image_id); |
- |
- *stride = 0; |
- DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, resource->type); |
- GLES2Interface* gl = ContextGL(); |
- DCHECK(gl); |
- DCHECK(resource->gl_pixel_buffer_id); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
- resource->gl_pixel_buffer_id); |
- uint8_t* image = static_cast<uint8_t*>(gl->MapBufferCHROMIUM( |
- GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, GL_WRITE_ONLY)); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, 0); |
- // Buffer is required to be 4-byte aligned. |
- CHECK(!(reinterpret_cast<intptr_t>(image) & 3)); |
- return image; |
-} |
- |
-void ResourceProvider::UnmapPixelBuffer(ResourceId id) { |
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
- "ResourceProvider::UnmapPixelBuffer"); |
- |
- Resource* resource = GetResource(id); |
- DCHECK(resource->origin == Resource::INTERNAL); |
- DCHECK_EQ(resource->exported_count, 0); |
- DCHECK(!resource->image_id); |
- |
- DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, resource->type); |
- GLES2Interface* gl = ContextGL(); |
- DCHECK(gl); |
- DCHECK(resource->gl_pixel_buffer_id); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
- resource->gl_pixel_buffer_id); |
- gl->UnmapBufferCHROMIUM(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, 0); |
-} |
- |
GLenum ResourceProvider::BindForSampling(ResourceId resource_id, |
GLenum unit, |
GLenum filter) { |
@@ -1576,7 +1467,7 @@ GLenum ResourceProvider::BindForSampling(ResourceId resource_id, |
DCHECK(it != resources_.end()); |
Resource* resource = &it->second; |
DCHECK(resource->lock_for_read_count); |
- DCHECK(!resource->locked_for_write || resource->set_pixels_completion_forced); |
+ DCHECK(!resource->locked_for_write); |
ScopedSetActiveTexture scoped_active_tex(gl, unit); |
GLenum target = resource->target; |
@@ -1593,115 +1484,6 @@ GLenum ResourceProvider::BindForSampling(ResourceId resource_id, |
return target; |
} |
-void ResourceProvider::BeginSetPixels(ResourceId id) { |
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
- "ResourceProvider::BeginSetPixels"); |
- |
- Resource* resource = GetResource(id); |
- DCHECK(!resource->pending_set_pixels); |
- |
- LazyCreate(resource); |
- DCHECK(resource->origin == Resource::INTERNAL); |
- DCHECK(resource->gl_id || resource->allocated); |
- DCHECK(ReadLockFenceHasPassed(resource)); |
- DCHECK(!resource->image_id); |
- |
- bool allocate = !resource->allocated; |
- resource->allocated = true; |
- LockForWrite(id); |
- |
- DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, resource->type); |
- DCHECK(resource->gl_id); |
- GLES2Interface* gl = ContextGL(); |
- DCHECK(gl); |
- DCHECK(resource->gl_pixel_buffer_id); |
- DCHECK_EQ(resource->target, static_cast<GLenum>(GL_TEXTURE_2D)); |
- gl->BindTexture(GL_TEXTURE_2D, resource->gl_id); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
- resource->gl_pixel_buffer_id); |
- if (!resource->gl_upload_query_id) |
- gl->GenQueriesEXT(1, &resource->gl_upload_query_id); |
- gl->BeginQueryEXT(GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM, |
- resource->gl_upload_query_id); |
- if (allocate) { |
- gl->AsyncTexImage2DCHROMIUM(GL_TEXTURE_2D, |
- 0, /* level */ |
- GLInternalFormat(resource->format), |
- resource->size.width(), |
- resource->size.height(), |
- 0, /* border */ |
- GLDataFormat(resource->format), |
- GLDataType(resource->format), |
- NULL); |
- } else { |
- gl->AsyncTexSubImage2DCHROMIUM(GL_TEXTURE_2D, |
- 0, /* level */ |
- 0, /* x */ |
- 0, /* y */ |
- resource->size.width(), |
- resource->size.height(), |
- GLDataFormat(resource->format), |
- GLDataType(resource->format), |
- NULL); |
- } |
- gl->EndQueryEXT(GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM); |
- gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, 0); |
- |
- resource->pending_set_pixels = true; |
- resource->set_pixels_completion_forced = false; |
-} |
- |
-void ResourceProvider::ForceSetPixelsToComplete(ResourceId id) { |
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
- "ResourceProvider::ForceSetPixelsToComplete"); |
- |
- Resource* resource = GetResource(id); |
- |
- DCHECK(resource->locked_for_write); |
- DCHECK(resource->pending_set_pixels); |
- DCHECK(!resource->set_pixels_completion_forced); |
- |
- if (resource->gl_id) { |
- GLES2Interface* gl = ContextGL(); |
- gl->BindTexture(GL_TEXTURE_2D, resource->gl_id); |
- gl->WaitAsyncTexImage2DCHROMIUM(GL_TEXTURE_2D); |
- gl->BindTexture(GL_TEXTURE_2D, 0); |
- } |
- |
- resource->set_pixels_completion_forced = true; |
-} |
- |
-bool ResourceProvider::DidSetPixelsComplete(ResourceId id) { |
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
- "ResourceProvider::DidSetPixelsComplete"); |
- |
- Resource* resource = GetResource(id); |
- |
- DCHECK(resource->locked_for_write); |
- DCHECK(resource->pending_set_pixels); |
- |
- if (resource->gl_id) { |
- GLES2Interface* gl = ContextGL(); |
- DCHECK(gl); |
- DCHECK(resource->gl_upload_query_id); |
- GLuint complete = 1; |
- gl->GetQueryObjectuivEXT( |
- resource->gl_upload_query_id, GL_QUERY_RESULT_AVAILABLE_EXT, &complete); |
- if (!complete) |
- return false; |
- } |
- |
- resource->pending_set_pixels = false; |
- UnlockForWrite(resource); |
- |
- // Async set pixels commands are not necessarily processed in-sequence with |
- // drawing commands. Read lock fences are required to ensure that async |
- // commands don't access the resource while used for drawing. |
- resource->read_lock_fences_enabled = true; |
- |
- return true; |
-} |
- |
void ResourceProvider::CreateForTesting(ResourceId id) { |
LazyCreate(GetResource(id)); |
} |