Index: ui/gl/gl_image_egl.cc |
diff --git a/ui/gl/gl_image_egl.cc b/ui/gl/gl_image_egl.cc |
index 0ebd7ccac909fef1c5e74d8a147e808d274271c5..685398e9ffaa17cac74e5c3e305dd660f5e68f92 100644 |
--- a/ui/gl/gl_image_egl.cc |
+++ b/ui/gl/gl_image_egl.cc |
@@ -10,29 +10,28 @@ |
namespace gfx { |
GLImageEGL::GLImageEGL(const gfx::Size& size) |
- : egl_image_(EGL_NO_IMAGE_KHR), size_(size) { |
-} |
+ : egl_image_(EGL_NO_IMAGE_KHR), size_(size) {} |
GLImageEGL::~GLImageEGL() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK_EQ(EGL_NO_IMAGE_KHR, egl_image_); |
} |
-bool GLImageEGL::Initialize(EGLenum target, |
- EGLClientBuffer buffer, |
- const EGLint* attrs) { |
+bool GLImageEGL::Initialize( |
+ base::trace_event::GenericSharedMemoryId shared_memory_id, |
+ EGLenum target, |
+ EGLClientBuffer buffer, |
+ const EGLint* attrs) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK_EQ(EGL_NO_IMAGE_KHR, egl_image_); |
egl_image_ = eglCreateImageKHR(GLSurfaceEGL::GetHardwareDisplay(), |
- EGL_NO_CONTEXT, |
- target, |
- buffer, |
- attrs); |
+ EGL_NO_CONTEXT, target, buffer, attrs); |
if (egl_image_ == EGL_NO_IMAGE_KHR) { |
DLOG(ERROR) << "Error creating EGLImage: " << ui::GetLastEGLErrorString(); |
return false; |
} |
+ shared_memory_id_ = shared_memory_id; |
return true; |
} |
@@ -75,4 +74,24 @@ bool GLImageEGL::ScheduleOverlayPlane(gfx::AcceleratedWidget widget, |
return false; |
} |
+void GLImageEGL::DumpMemory(base::trace_event::ProcessMemoryDump* pmd, |
+ uint64_t process_tracing_id, |
+ const std::string& dump_name) { |
+ // TODO(ericrk): Don't always assume 4BPP. |
+ const size_t bytes_per_pixel = 4; |
+ size_t size_in_bytes = |
+ bytes_per_pixel * GetSize().width() * GetSize().height(); |
+ |
+ base::trace_event::MemoryAllocatorDump* dump = |
+ pmd->CreateAllocatorDump(dump_name); |
+ dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, |
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes, |
+ static_cast<uint64_t>(size_in_bytes)); |
+ |
+ auto guid = base::trace_event::GetGenericSharedMemoryGUIDForTracing( |
+ process_tracing_id, shared_memory_id_); |
+ pmd->CreateSharedGlobalAllocatorDump(guid); |
+ pmd->AddOwnershipEdge(dump->guid(), guid); |
+} |
+ |
} // namespace gfx |