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

Unified Diff: content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc

Issue 634083002: gpu: Compositor management of GpuMemoryBuffer instances. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cc-pre-chromium-image-refactor
Patch Set: rebase Created 6 years, 2 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: content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc
diff --git a/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc b/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc
index b4ee12872460a79e1487500898dd43bd6ffedae4..2347a7d14b15b8dbcb706617169a6f48e45a4f53 100644
--- a/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc
+++ b/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc
@@ -18,10 +18,10 @@ void Noop() {
GpuMemoryBufferImplSharedMemory::GpuMemoryBufferImplSharedMemory(
const gfx::Size& size,
- unsigned internalformat,
+ Format format,
const DestructionCallback& callback,
scoped_ptr<base::SharedMemory> shared_memory)
- : GpuMemoryBufferImpl(size, internalformat, callback),
+ : GpuMemoryBufferImpl(size, format, callback),
shared_memory_(shared_memory.Pass()) {
}
@@ -30,34 +30,31 @@ GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() {
// static
void GpuMemoryBufferImplSharedMemory::Create(const gfx::Size& size,
- unsigned internalformat,
- unsigned usage,
+ Format format,
const CreationCallback& callback) {
- DCHECK(GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
- size, internalformat, usage));
+ DCHECK(IsLayoutSupported(size, format));
scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
- if (!shared_memory->CreateAnonymous(size.GetArea() *
- BytesPerPixel(internalformat))) {
+ if (!shared_memory->CreateAnonymous(size.GetArea() * BytesPerPixel(format))) {
callback.Run(scoped_ptr<GpuMemoryBufferImpl>());
return;
}
callback.Run(
make_scoped_ptr<GpuMemoryBufferImpl>(new GpuMemoryBufferImplSharedMemory(
- size, internalformat, base::Bind(&Noop), shared_memory.Pass())));
+ size, format, base::Bind(&Noop), shared_memory.Pass())));
}
// static
void GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
const gfx::Size& size,
- unsigned internalformat,
+ Format format,
base::ProcessHandle child_process,
const AllocationCallback& callback) {
- DCHECK(IsLayoutSupported(size, internalformat));
+ DCHECK(IsLayoutSupported(size, format));
+
base::SharedMemory shared_memory;
- if (!shared_memory.CreateAnonymous(size.GetArea() *
- BytesPerPixel(internalformat))) {
+ if (!shared_memory.CreateAnonymous(size.GetArea() * BytesPerPixel(format))) {
callback.Run(gfx::GpuMemoryBufferHandle());
return;
}
@@ -72,9 +69,9 @@ scoped_ptr<GpuMemoryBufferImpl>
GpuMemoryBufferImplSharedMemory::CreateFromHandle(
const gfx::GpuMemoryBufferHandle& handle,
const gfx::Size& size,
- unsigned internalformat,
+ Format format,
const DestructionCallback& callback) {
- DCHECK(IsLayoutSupported(size, internalformat));
+ DCHECK(IsLayoutSupported(size, format));
if (!base::SharedMemory::IsHandleValid(handle.handle))
return scoped_ptr<GpuMemoryBufferImpl>();
@@ -82,42 +79,61 @@ GpuMemoryBufferImplSharedMemory::CreateFromHandle(
return make_scoped_ptr<GpuMemoryBufferImpl>(
new GpuMemoryBufferImplSharedMemory(
size,
- internalformat,
+ format,
callback,
make_scoped_ptr(new base::SharedMemory(handle.handle, false))));
}
// static
-bool GpuMemoryBufferImplSharedMemory::IsLayoutSupported(
- const gfx::Size& size,
- unsigned internalformat) {
- base::CheckedNumeric<int> buffer_size = size.width();
- buffer_size *= size.height();
- buffer_size *= BytesPerPixel(internalformat);
- return buffer_size.IsValid();
+bool GpuMemoryBufferImplSharedMemory::IsFormatSupported(Format format) {
+ switch (format) {
+ case RGBA_8888:
+ case BGRA_8888:
+ return true;
+ case RGBX_8888:
+ return false;
+ }
+
+ NOTREACHED();
+ return false;
}
// static
-bool GpuMemoryBufferImplSharedMemory::IsUsageSupported(unsigned usage) {
+bool GpuMemoryBufferImplSharedMemory::IsUsageSupported(Usage usage) {
switch (usage) {
- case GL_IMAGE_MAP_CHROMIUM:
+ case MAP:
return true;
- default:
+ case SCANOUT:
return false;
}
+
+ NOTREACHED();
+ return false;
+}
+
+// static
+bool GpuMemoryBufferImplSharedMemory::IsLayoutSupported(const gfx::Size& size,
+ Format format) {
+ if (!IsFormatSupported(format))
+ return false;
+
+ base::CheckedNumeric<int> buffer_size = size.width();
+ buffer_size *= size.height();
+ buffer_size *= BytesPerPixel(format);
+ return buffer_size.IsValid();
}
// static
bool GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
const gfx::Size& size,
- unsigned internalformat,
- unsigned usage) {
- return IsLayoutSupported(size, internalformat) && IsUsageSupported(usage);
+ Format format,
+ Usage usage) {
+ return IsLayoutSupported(size, format) && IsUsageSupported(usage);
}
void* GpuMemoryBufferImplSharedMemory::Map() {
DCHECK(!mapped_);
- if (!shared_memory_->Map(size_.GetArea() * BytesPerPixel(internalformat_)))
+ if (!shared_memory_->Map(size_.GetArea() * BytesPerPixel(format_)))
return NULL;
mapped_ = true;
return shared_memory_->memory();
@@ -130,7 +146,7 @@ void GpuMemoryBufferImplSharedMemory::Unmap() {
}
uint32 GpuMemoryBufferImplSharedMemory::GetStride() const {
- return size_.width() * BytesPerPixel(internalformat_);
+ return size_.width() * BytesPerPixel(format_);
}
gfx::GpuMemoryBufferHandle GpuMemoryBufferImplSharedMemory::GetHandle() const {

Powered by Google App Engine
This is Rietveld 408576698