Index: cc/resources/resource_provider.cc |
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc |
index be282b9ae93d738b59629e2e5f07894ad6dc4179..6129b26c8e80fa92dacfe6117d833d1ef487cbb1 100644 |
--- a/cc/resources/resource_provider.cc |
+++ b/cc/resources/resource_provider.cc |
@@ -33,7 +33,6 @@ |
#include "third_party/skia/include/gpu/GrTextureProvider.h" |
#include "ui/gfx/geometry/rect.h" |
#include "ui/gfx/geometry/vector2d.h" |
-#include "ui/gfx/gpu_memory_buffer.h" |
#include "ui/gl/trace_util.h" |
using gpu::gles2::GLES2Interface; |
@@ -118,25 +117,6 @@ GrPixelConfig ToGrPixelConfig(ResourceFormat format) { |
return kSkia8888_GrPixelConfig; |
} |
-gfx::BufferFormat ToGpuMemoryBufferFormat(ResourceFormat format) { |
- switch (format) { |
- case RGBA_8888: |
- return gfx::BufferFormat::RGBA_8888; |
- case BGRA_8888: |
- return gfx::BufferFormat::BGRA_8888; |
- case RGBA_4444: |
- return gfx::BufferFormat::RGBA_4444; |
- case ALPHA_8: |
- case LUMINANCE_8: |
- case RGB_565: |
- case ETC1: |
- case RED_8: |
- break; |
- } |
- NOTREACHED(); |
- return gfx::BufferFormat::RGBA_8888; |
-} |
- |
class ScopedSetActiveTexture { |
public: |
ScopedSetActiveTexture(GLES2Interface* gl, GLenum unit) |
@@ -207,46 +187,6 @@ class BufferIdAllocator : public IdAllocator { |
DISALLOW_COPY_AND_ASSIGN(BufferIdAllocator); |
}; |
-// Query object based fence implementation used to detect completion of copy |
-// texture operations. Fence has passed when query result is available. |
-class CopyTextureFence : public ResourceProvider::Fence { |
- public: |
- CopyTextureFence(gpu::gles2::GLES2Interface* gl, unsigned query_id) |
- : gl_(gl), query_id_(query_id) {} |
- |
- // Overridden from ResourceProvider::Fence: |
- void Set() override {} |
- bool HasPassed() override { |
- unsigned available = 1; |
- gl_->GetQueryObjectuivEXT( |
- query_id_, GL_QUERY_RESULT_AVAILABLE_EXT, &available); |
- if (!available) |
- return false; |
- |
- ProcessResult(); |
- return true; |
- } |
- void Wait() override { |
- // ProcessResult() will wait for result to become available. |
- ProcessResult(); |
- } |
- |
- private: |
- ~CopyTextureFence() override {} |
- |
- void ProcessResult() { |
- unsigned time_elapsed_us = 0; |
- gl_->GetQueryObjectuivEXT(query_id_, GL_QUERY_RESULT_EXT, &time_elapsed_us); |
- UMA_HISTOGRAM_CUSTOM_COUNTS("Renderer4.CopyTextureLatency", time_elapsed_us, |
- 0, 256000, 50); |
- } |
- |
- gpu::gles2::GLES2Interface* gl_; |
- unsigned query_id_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CopyTextureFence); |
-}; |
- |
// Generates process-unique IDs to use for tracing a ResourceProvider's |
// resources. |
base::StaticAtomicSequenceNumber g_next_resource_provider_tracing_id; |
@@ -402,13 +342,12 @@ scoped_ptr<ResourceProvider> ResourceProvider::Create( |
int highp_threshold_min, |
bool use_rgba_4444_texture_format, |
size_t id_allocation_chunk_size, |
- bool use_persistent_map_for_gpu_memory_buffers, |
const std::vector<unsigned>& use_image_texture_targets) { |
scoped_ptr<ResourceProvider> resource_provider(new ResourceProvider( |
output_surface, shared_bitmap_manager, gpu_memory_buffer_manager, |
blocking_main_thread_task_runner, highp_threshold_min, |
use_rgba_4444_texture_format, id_allocation_chunk_size, |
- use_persistent_map_for_gpu_memory_buffers, use_image_texture_targets)); |
+ use_image_texture_targets)); |
resource_provider->Initialize(); |
return resource_provider; |
} |
@@ -999,13 +938,9 @@ gfx::GpuMemoryBuffer* |
ResourceProvider::ScopedWriteLockGpuMemoryBuffer::GetGpuMemoryBuffer() { |
if (gpu_memory_buffer_) |
return gpu_memory_buffer_; |
- gfx::BufferUsage usage = |
- resource_provider_->use_persistent_map_for_gpu_memory_buffers() |
- ? gfx::BufferUsage::PERSISTENT_MAP |
- : gfx::BufferUsage::MAP; |
scoped_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer = |
gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( |
- size_, ToGpuMemoryBufferFormat(format_), usage); |
+ size_, BufferFormat(format_), gfx::BufferUsage::MAP); |
gpu_memory_buffer_ = gpu_memory_buffer.release(); |
return gpu_memory_buffer_; |
} |
@@ -1097,7 +1032,6 @@ ResourceProvider::ResourceProvider( |
int highp_threshold_min, |
bool use_rgba_4444_texture_format, |
size_t id_allocation_chunk_size, |
- bool use_persistent_map_for_gpu_memory_buffers, |
const std::vector<unsigned>& use_image_texture_targets) |
: output_surface_(output_surface), |
shared_bitmap_manager_(shared_bitmap_manager), |
@@ -1119,8 +1053,6 @@ ResourceProvider::ResourceProvider( |
use_rgba_4444_texture_format_(use_rgba_4444_texture_format), |
id_allocation_chunk_size_(id_allocation_chunk_size), |
use_sync_query_(false), |
- use_persistent_map_for_gpu_memory_buffers_( |
- use_persistent_map_for_gpu_memory_buffers), |
use_image_texture_targets_(use_image_texture_targets), |
tracing_id_(g_next_resource_provider_tracing_id.GetNext()) { |
DCHECK(output_surface_->HasClient()); |
@@ -1856,79 +1788,6 @@ void ResourceProvider::BindImageForSampling(Resource* resource) { |
resource->dirty_image = false; |
} |
-void ResourceProvider::CopyResource(ResourceId source_id, |
- ResourceId dest_id, |
- const gfx::Rect& rect) { |
- TRACE_EVENT0("cc", "ResourceProvider::CopyResource"); |
- |
- Resource* source_resource = GetResource(source_id); |
- DCHECK(!source_resource->lock_for_read_count); |
- DCHECK(source_resource->origin == Resource::INTERNAL); |
- DCHECK_EQ(source_resource->exported_count, 0); |
- DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, source_resource->type); |
- LazyAllocate(source_resource); |
- |
- Resource* dest_resource = GetResource(dest_id); |
- DCHECK(!dest_resource->locked_for_write); |
- DCHECK(!dest_resource->lock_for_read_count); |
- DCHECK(dest_resource->origin == Resource::INTERNAL); |
- DCHECK_EQ(dest_resource->exported_count, 0); |
- DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, dest_resource->type); |
- LazyAllocate(dest_resource); |
- |
- DCHECK_EQ(source_resource->type, dest_resource->type); |
- DCHECK_EQ(source_resource->format, dest_resource->format); |
- DCHECK(source_resource->size == dest_resource->size); |
- DCHECK(gfx::Rect(dest_resource->size).Contains(rect)); |
- |
- GLES2Interface* gl = ContextGL(); |
- DCHECK(gl); |
- if (source_resource->image_id && source_resource->dirty_image) { |
- gl->BindTexture(source_resource->target, source_resource->gl_id); |
- BindImageForSampling(source_resource); |
- } |
- if (use_sync_query_) { |
- if (!source_resource->gl_read_lock_query_id) |
- gl->GenQueriesEXT(1, &source_resource->gl_read_lock_query_id); |
-#if defined(OS_CHROMEOS) |
- // TODO(reveman): This avoids a performance problem on some ChromeOS |
- // devices. This needs to be removed to support native GpuMemoryBuffer |
- // implementations. crbug.com/436314 |
- gl->BeginQueryEXT(GL_COMMANDS_ISSUED_CHROMIUM, |
- source_resource->gl_read_lock_query_id); |
-#else |
- gl->BeginQueryEXT(GL_COMMANDS_COMPLETED_CHROMIUM, |
- source_resource->gl_read_lock_query_id); |
-#endif |
- } |
- DCHECK(!dest_resource->image_id); |
- dest_resource->allocated = true; |
- gl->CopySubTextureCHROMIUM(dest_resource->target, source_resource->gl_id, |
- dest_resource->gl_id, rect.x(), rect.y(), rect.x(), |
- rect.y(), rect.width(), rect.height(), |
- false, false, false); |
- if (source_resource->gl_read_lock_query_id) { |
- // End query and create a read lock fence that will prevent access to |
-// source resource until CopySubTextureCHROMIUM command has completed. |
-#if defined(OS_CHROMEOS) |
- gl->EndQueryEXT(GL_COMMANDS_ISSUED_CHROMIUM); |
-#else |
- gl->EndQueryEXT(GL_COMMANDS_COMPLETED_CHROMIUM); |
-#endif |
- source_resource->read_lock_fence = make_scoped_refptr( |
- new CopyTextureFence(gl, source_resource->gl_read_lock_query_id)); |
- } else { |
- // Create a SynchronousFence when CHROMIUM_sync_query extension is missing. |
- // Try to use one synchronous fence for as many CopyResource operations as |
- // possible as that reduce the number of times we have to synchronize with |
- // the GL. |
- if (!synchronous_fence_.get() || synchronous_fence_->has_synchronized()) |
- synchronous_fence_ = make_scoped_refptr(new SynchronousFence(gl)); |
- source_resource->read_lock_fence = synchronous_fence_; |
- source_resource->read_lock_fence->Set(); |
- } |
-} |
- |
void ResourceProvider::WaitSyncPointIfNeeded(ResourceId id) { |
Resource* resource = GetResource(id); |
DCHECK_EQ(resource->exported_count, 0); |
@@ -1944,15 +1803,6 @@ void ResourceProvider::WaitSyncPointIfNeeded(ResourceId id) { |
resource->mailbox.set_sync_point(0); |
} |
-void ResourceProvider::WaitReadLockIfNeeded(ResourceId id) { |
- Resource* resource = GetResource(id); |
- DCHECK_EQ(resource->exported_count, 0); |
- if (!resource->read_lock_fence.get()) |
- return; |
- |
- resource->read_lock_fence->Wait(); |
-} |
- |
GLint ResourceProvider::GetActiveTextureUnit(GLES2Interface* gl) { |
GLint active_unit = 0; |
gl->GetIntegerv(GL_ACTIVE_TEXTURE, &active_unit); |
@@ -1960,7 +1810,7 @@ GLint ResourceProvider::GetActiveTextureUnit(GLES2Interface* gl) { |
} |
GLenum ResourceProvider::GetImageTextureTarget(ResourceFormat format) { |
- gfx::BufferFormat buffer_format = ToGpuMemoryBufferFormat(format); |
+ gfx::BufferFormat buffer_format = BufferFormat(format); |
DCHECK_GT(use_image_texture_targets_.size(), |
static_cast<size_t>(buffer_format)); |
return use_image_texture_targets_[static_cast<size_t>(buffer_format)]; |