Commit d34c6cf1 authored by Antoine Labour's avatar Antoine Labour Committed by Commit Bot

Remove kGpuMemoryBuffer resource type

They are only created in ResourceProviderTest, not used in production.
Also remove ScopedWriteLockGpuMemoryBuffer and helper functions in
LayerTreeResourceProvider.

Bug: None
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I8ddd10fe5c0f86f994dbfeb966200154304d8432
Reviewed-on: https://chromium-review.googlesource.com/1011558
Commit-Queue: Antoine Labour <piman@chromium.org>
Reviewed-by: default avatarSunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#551087}
parent 7e17239b
...@@ -371,36 +371,6 @@ viz::ResourceId LayerTreeResourceProvider::CreateGpuTextureResource( ...@@ -371,36 +371,6 @@ viz::ResourceId LayerTreeResourceProvider::CreateGpuTextureResource(
return id; return id;
} }
viz::ResourceId LayerTreeResourceProvider::CreateGpuMemoryBufferResource(
const gfx::Size& size,
viz::ResourceTextureHint hint,
viz::ResourceFormat format,
gfx::BufferUsage usage,
const gfx::ColorSpace& color_space) {
DCHECK(compositor_context_provider_);
DCHECK(!size.IsEmpty());
DCHECK(compositor_context_provider_);
DCHECK_LE(size.width(), settings_.max_texture_size);
DCHECK_LE(size.height(), settings_.max_texture_size);
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
viz::ResourceId id = next_id_++;
viz::internal::Resource* resource = InsertResource(
id, viz::internal::Resource(size, viz::internal::Resource::INTERNAL, hint,
viz::ResourceType::kGpuMemoryBuffer, format,
color_space));
resource->target = GetImageTextureTarget(
compositor_context_provider_->ContextCapabilities(), usage, format);
resource->buffer_format = BufferFormat(format);
resource->usage = usage;
resource->is_overlay_candidate = true;
// GpuMemoryBuffer provides direct access to the memory used by the GPU. Read
// lock fences are required to ensure that we're not trying to map a buffer
// that is currently in-use by the GPU.
resource->read_lock_fences_enabled = true;
return id;
}
viz::ResourceId LayerTreeResourceProvider::CreateBitmapResource( viz::ResourceId LayerTreeResourceProvider::CreateBitmapResource(
const gfx::Size& size, const gfx::Size& size,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
...@@ -573,38 +543,6 @@ void LayerTreeResourceProvider::CreateMailbox( ...@@ -573,38 +543,6 @@ void LayerTreeResourceProvider::CreateMailbox(
resource->SetLocallyUsed(); resource->SetLocallyUsed();
} }
void LayerTreeResourceProvider::CreateAndBindImage(
viz::internal::Resource* resource) {
DCHECK(resource->gpu_memory_buffer);
#if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
// TODO(reveman): This avoids a performance problem on ARM ChromeOS
// devices. This only works with shared memory backed buffers.
// https://crbug.com/580166
DCHECK_EQ(resource->gpu_memory_buffer->GetHandle().type,
gfx::SHARED_MEMORY_BUFFER);
#endif
CreateTexture(resource);
gpu::gles2::GLES2Interface* gl = ContextGL();
DCHECK(gl);
gl->BindTexture(resource->target, resource->gl_id);
if (!resource->image_id) {
resource->image_id = gl->CreateImageCHROMIUM(
resource->gpu_memory_buffer->AsClientBuffer(), resource->size.width(),
resource->size.height(), GLInternalFormat(resource->format));
DCHECK(resource->image_id ||
gl->GetGraphicsResetStatusKHR() != GL_NO_ERROR);
gl->BindTexImage2DCHROMIUM(resource->target, resource->image_id);
} else {
gl->ReleaseTexImage2DCHROMIUM(resource->target, resource->image_id);
gl->BindTexImage2DCHROMIUM(resource->target, resource->image_id);
}
}
void LayerTreeResourceProvider::AllocateForTesting(viz::ResourceId id) { void LayerTreeResourceProvider::AllocateForTesting(viz::ResourceId id) {
viz::internal::Resource* resource = GetResource(id); viz::internal::Resource* resource = GetResource(id);
if (!resource->allocated) { if (!resource->allocated) {
...@@ -922,48 +860,6 @@ void LayerTreeResourceProvider::ScopedWriteLockRaster::LazyAllocate( ...@@ -922,48 +860,6 @@ void LayerTreeResourceProvider::ScopedWriteLockRaster::LazyAllocate(
} }
} }
LayerTreeResourceProvider::ScopedWriteLockGpuMemoryBuffer ::
ScopedWriteLockGpuMemoryBuffer(LayerTreeResourceProvider* resource_provider,
viz::ResourceId resource_id)
: resource_provider_(resource_provider), resource_id_(resource_id) {
viz::internal::Resource* resource =
resource_provider->LockForWrite(resource_id);
DCHECK_EQ(resource->type, viz::ResourceType::kGpuMemoryBuffer);
size_ = resource->size;
format_ = resource->format;
usage_ = resource->usage;
color_space_ = resource_provider->GetResourceColorSpaceForRaster(resource);
gpu_memory_buffer_ = std::move(resource->gpu_memory_buffer);
}
LayerTreeResourceProvider::ScopedWriteLockGpuMemoryBuffer::
~ScopedWriteLockGpuMemoryBuffer() {
viz::internal::Resource* resource =
resource_provider_->GetResource(resource_id_);
// Avoid crashing in release builds if GpuMemoryBuffer allocation fails.
// http://crbug.com/554541
if (gpu_memory_buffer_) {
resource->gpu_memory_buffer = std::move(gpu_memory_buffer_);
resource->allocated = true;
resource_provider_->CreateAndBindImage(resource);
}
resource_provider_->UnlockForWrite(resource);
}
gfx::GpuMemoryBuffer* LayerTreeResourceProvider::
ScopedWriteLockGpuMemoryBuffer::GetGpuMemoryBuffer() {
if (!gpu_memory_buffer_) {
gpu_memory_buffer_ =
resource_provider_->gpu_memory_buffer_manager()->CreateGpuMemoryBuffer(
size_, BufferFormat(format_), usage_, gpu::kNullSurfaceHandle);
// Avoid crashing in release builds if GpuMemoryBuffer allocation fails.
// http://crbug.com/554541
if (gpu_memory_buffer_ && color_space_.IsValid())
gpu_memory_buffer_->SetColorSpace(color_space_);
}
return gpu_memory_buffer_.get();
}
LayerTreeResourceProvider::ScopedWriteLockSoftware::ScopedWriteLockSoftware( LayerTreeResourceProvider::ScopedWriteLockSoftware::ScopedWriteLockSoftware(
LayerTreeResourceProvider* resource_provider, LayerTreeResourceProvider* resource_provider,
viz::ResourceId resource_id) viz::ResourceId resource_id)
......
...@@ -64,12 +64,6 @@ class CC_EXPORT LayerTreeResourceProvider : public ResourceProvider { ...@@ -64,12 +64,6 @@ class CC_EXPORT LayerTreeResourceProvider : public ResourceProvider {
viz::ResourceTextureHint hint, viz::ResourceTextureHint hint,
viz::ResourceFormat format, viz::ResourceFormat format,
const gfx::ColorSpace& color_space); const gfx::ColorSpace& color_space);
viz::ResourceId CreateGpuMemoryBufferResource(
const gfx::Size& size,
viz::ResourceTextureHint hint,
viz::ResourceFormat format,
gfx::BufferUsage usage,
const gfx::ColorSpace& color_space);
viz::ResourceId CreateBitmapResource(const gfx::Size& size, viz::ResourceId CreateBitmapResource(const gfx::Size& size,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
viz::ResourceFormat format); viz::ResourceFormat format);
...@@ -237,29 +231,6 @@ class CC_EXPORT LayerTreeResourceProvider : public ResourceProvider { ...@@ -237,29 +231,6 @@ class CC_EXPORT LayerTreeResourceProvider : public ResourceProvider {
DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockRaster); DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockRaster);
}; };
class CC_EXPORT ScopedWriteLockGpuMemoryBuffer {
public:
ScopedWriteLockGpuMemoryBuffer(LayerTreeResourceProvider* resource_provider,
viz::ResourceId resource_id);
~ScopedWriteLockGpuMemoryBuffer();
gfx::GpuMemoryBuffer* GetGpuMemoryBuffer();
const gfx::ColorSpace& color_space_for_raster() const {
return color_space_;
}
private:
LayerTreeResourceProvider* const resource_provider_;
const viz::ResourceId resource_id_;
gfx::Size size_;
viz::ResourceFormat format_;
gfx::BufferUsage usage_;
gfx::ColorSpace color_space_;
std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_;
DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBuffer);
};
class CC_EXPORT ScopedWriteLockSoftware { class CC_EXPORT ScopedWriteLockSoftware {
public: public:
ScopedWriteLockSoftware(LayerTreeResourceProvider* resource_provider, ScopedWriteLockSoftware(LayerTreeResourceProvider* resource_provider,
......
...@@ -105,13 +105,6 @@ void ResourceProvider::DeleteResourceInternal(ResourceMap::iterator it, ...@@ -105,13 +105,6 @@ void ResourceProvider::DeleteResourceInternal(ResourceMap::iterator it,
if (!lost_resource && resource->origin == viz::internal::Resource::INTERNAL) if (!lost_resource && resource->origin == viz::internal::Resource::INTERNAL)
WaitSyncTokenInternal(resource); WaitSyncTokenInternal(resource);
if (resource->image_id) {
DCHECK_EQ(resource->origin, viz::internal::Resource::INTERNAL);
GLES2Interface* gl = ContextGL();
DCHECK(gl);
gl->DestroyImageCHROMIUM(resource->image_id);
}
if (resource->gl_id) { if (resource->gl_id) {
GLES2Interface* gl = ContextGL(); GLES2Interface* gl = ContextGL();
DCHECK(gl); DCHECK(gl);
...@@ -126,11 +119,6 @@ void ResourceProvider::DeleteResourceInternal(ResourceMap::iterator it, ...@@ -126,11 +119,6 @@ void ResourceProvider::DeleteResourceInternal(ResourceMap::iterator it,
resource->owned_shared_bitmap = nullptr; resource->owned_shared_bitmap = nullptr;
} }
if (resource->gpu_memory_buffer) {
DCHECK_EQ(viz::ResourceType::kGpuMemoryBuffer, resource->type);
resource->gpu_memory_buffer = nullptr;
}
resources_.erase(it); resources_.erase(it);
} }
...@@ -201,18 +189,11 @@ bool ResourceProvider::OnMemoryDump( ...@@ -201,18 +189,11 @@ bool ResourceProvider::OnMemoryDump(
base::trace_event::ProcessMemoryDump* pmd) { base::trace_event::ProcessMemoryDump* pmd) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
const uint64_t tracing_process_id =
base::trace_event::MemoryDumpManager::GetInstance()
->GetTracingProcessId();
for (const auto& resource_entry : resources_) { for (const auto& resource_entry : resources_) {
const auto& resource = resource_entry.second; const auto& resource = resource_entry.second;
bool backing_memory_allocated = false; bool backing_memory_allocated = false;
switch (resource.type) { switch (resource.type) {
case viz::ResourceType::kGpuMemoryBuffer:
backing_memory_allocated = !!resource.gpu_memory_buffer;
break;
case viz::ResourceType::kTexture: case viz::ResourceType::kTexture:
backing_memory_allocated = !!resource.gl_id; backing_memory_allocated = !!resource.gl_id;
break; break;
...@@ -250,18 +231,6 @@ bool ResourceProvider::OnMemoryDump( ...@@ -250,18 +231,6 @@ bool ResourceProvider::OnMemoryDump(
base::trace_event::MemoryAllocatorDumpGuid guid; base::trace_event::MemoryAllocatorDumpGuid guid;
base::UnguessableToken shared_memory_guid; base::UnguessableToken shared_memory_guid;
switch (resource.type) { switch (resource.type) {
case viz::ResourceType::kGpuMemoryBuffer:
// GpuMemoryBuffers may be backed by shared memory, and in that case we
// use the guid from there to attribute for the global shared memory
// dumps. Otherwise, they may be backed by native structures, and we
// fall back to that with GetGUIDForTracing.
shared_memory_guid =
resource.gpu_memory_buffer->GetHandle().handle.GetGUID();
if (shared_memory_guid.is_empty()) {
guid =
resource.gpu_memory_buffer->GetGUIDForTracing(tracing_process_id);
}
break;
case viz::ResourceType::kTexture: case viz::ResourceType::kTexture:
DCHECK(resource.gl_id); DCHECK(resource.gl_id);
guid = gl::GetGLTextureClientGUIDForTracing( guid = gl::GetGLTextureClientGUIDForTracing(
......
This diff is collapsed.
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "components/viz/common/quads/shared_bitmap.h" #include "components/viz/common/quads/shared_bitmap.h"
#include "ui/gfx/gpu_memory_buffer.h"
namespace viz { namespace viz {
namespace internal { namespace internal {
...@@ -80,7 +79,6 @@ void Resource::SetGenerateMipmap() { ...@@ -80,7 +79,6 @@ void Resource::SetGenerateMipmap() {
DCHECK(is_gpu_resource_type()); DCHECK(is_gpu_resource_type());
DCHECK_EQ(target, static_cast<GLenum>(GL_TEXTURE_2D)); DCHECK_EQ(target, static_cast<GLenum>(GL_TEXTURE_2D));
DCHECK(hint & ResourceTextureHint::kMipmap); DCHECK(hint & ResourceTextureHint::kMipmap);
DCHECK(!gpu_memory_buffer);
mipmap_state = GENERATE; mipmap_state = GENERATE;
} }
......
...@@ -184,8 +184,6 @@ struct VIZ_COMMON_EXPORT Resource { ...@@ -184,8 +184,6 @@ struct VIZ_COMMON_EXPORT Resource {
GLenum filter = GL_LINEAR; GLenum filter = GL_LINEAR;
// The current min filter for GpuMemoryBuffer- and texture-backed resources. // The current min filter for GpuMemoryBuffer- and texture-backed resources.
GLenum min_filter = GL_LINEAR; GLenum min_filter = GL_LINEAR;
// The GL image id for GpuMemoryBuffer-backed resources.
GLuint image_id = 0;
// A hint for texture-backed resources about how the resource will be used, // A hint for texture-backed resources about how the resource will be used,
// that dictates how it should be allocated/used. // that dictates how it should be allocated/used.
ResourceTextureHint hint = ResourceTextureHint::kDefault; ResourceTextureHint hint = ResourceTextureHint::kDefault;
...@@ -212,8 +210,6 @@ struct VIZ_COMMON_EXPORT Resource { ...@@ -212,8 +210,6 @@ struct VIZ_COMMON_EXPORT Resource {
SharedBitmap* shared_bitmap = nullptr; SharedBitmap* shared_bitmap = nullptr;
// Ownership of |shared_bitmap| for when it is created internally. // Ownership of |shared_bitmap| for when it is created internally.
std::unique_ptr<SharedBitmap> owned_shared_bitmap; std::unique_ptr<SharedBitmap> owned_shared_bitmap;
// The GpuMemoryBuffer ownership for GpuMemoryBuffer-backed resources.
std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer;
// The color space for all resource types, to control how the resource should // The color space for all resource types, to control how the resource should
// be drawn to output device. // be drawn to output device.
gfx::ColorSpace color_space; gfx::ColorSpace color_space;
......
...@@ -9,7 +9,6 @@ namespace viz { ...@@ -9,7 +9,6 @@ namespace viz {
// Types of resources that can be sent to the viz compositing service. // Types of resources that can be sent to the viz compositing service.
enum class ResourceType { enum class ResourceType {
kGpuMemoryBuffer,
kTexture, kTexture,
kBitmap, kBitmap,
}; };
......
...@@ -168,16 +168,8 @@ void SoftwareRenderer::PrepareSurfaceForPass( ...@@ -168,16 +168,8 @@ void SoftwareRenderer::PrepareSurfaceForPass(
} }
bool SoftwareRenderer::IsSoftwareResource(ResourceId resource_id) const { bool SoftwareRenderer::IsSoftwareResource(ResourceId resource_id) const {
switch (resource_provider_->GetResourceType(resource_id)) { return resource_provider_->GetResourceType(resource_id) ==
case ResourceType::kGpuMemoryBuffer: ResourceType::kBitmap;
case ResourceType::kTexture:
return false;
case ResourceType::kBitmap:
return true;
}
LOG(FATAL) << "Invalid resource type.";
return false;
} }
void SoftwareRenderer::DoDrawQuad(const DrawQuad* quad, void SoftwareRenderer::DoDrawQuad(const DrawQuad* quad,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment