| Index: ui/gfx/linux/native_pixmap_dmabuf.cc | 
| diff --git a/ui/gfx/linux/native_pixmap_dmabuf.cc b/ui/gfx/linux/native_pixmap_dmabuf.cc | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..70f50c7859ed8e9e66a5f7dfc624ee1270f6216e | 
| --- /dev/null | 
| +++ b/ui/gfx/linux/native_pixmap_dmabuf.cc | 
| @@ -0,0 +1,127 @@ | 
| +// Copyright 2017 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#include "ui/gfx/linux/native_pixmap_dmabuf.h" | 
| + | 
| +namespace gfx { | 
| + | 
| +NativePixmapDmabufHelper::NativePixmapDmabufHelper( | 
| +    const gfx::NativePixmapHandle& handle) { | 
| +  for (auto& fd : handle.fds) { | 
| +    fds_.emplace_back(fd.fd); | 
| +  } | 
| + | 
| +  for (const auto& plane : handle.planes) { | 
| +    planes_.push_back(plane); | 
| +  } | 
| +} | 
| + | 
| +NativePixmapDmabufHelper::NativePixmapDmabufHelper( | 
| +    std::vector<base::ScopedFD>&& fds, | 
| +    const std::vector<gfx::NativePixmapPlane>&& planes) | 
| +    : fds_(std::move(fds)), planes_(std::move(planes)) {} | 
| + | 
| +NativePixmapDmabufHelper::~NativePixmapDmabufHelper() {} | 
| + | 
| +bool NativePixmapDmabufHelper::AreFdsValid() const { | 
| +  if (fds_.empty()) | 
| +    return false; | 
| + | 
| +  for (const auto& fd : fds_) { | 
| +    if (fd.get() == -1) | 
| +      return false; | 
| +  } | 
| +  return true; | 
| +} | 
| + | 
| +size_t NativePixmapDmabufHelper::GetFdCount() const { | 
| +  return fds_.size(); | 
| +} | 
| + | 
| +int NativePixmapDmabufHelper::GetFd(size_t index) const { | 
| +  DCHECK_LT(index, fds_.size()); | 
| +  return fds_[index].get(); | 
| +} | 
| + | 
| +int NativePixmapDmabufHelper::GetStride(size_t index) const { | 
| +  DCHECK_LT(index, planes_.size()); | 
| +  return planes_[index].stride; | 
| +} | 
| + | 
| +int NativePixmapDmabufHelper::GetOffset(size_t index) const { | 
| +  DCHECK_LT(index, planes_.size()); | 
| +  return planes_[index].offset; | 
| +} | 
| + | 
| +size_t NativePixmapDmabufHelper::GetSize(size_t index) const { | 
| +  DCHECK_LT(index, planes_.size()); | 
| +  return planes_[index].size; | 
| +} | 
| + | 
| +uint64_t NativePixmapDmabufHelper::GetFormatModifier(size_t index) const { | 
| +  DCHECK_LT(index, planes_.size()); | 
| +  return planes_[index].modifier; | 
| +} | 
| + | 
| +NativePixmapDmaBuf::NativePixmapDmaBuf( | 
| +    const gfx::Size& size, | 
| +    gfx::BufferFormat format, | 
| +    const scoped_refptr<NativePixmapDmabufHelper>& helper) | 
| +    : size_(size), format_(format), helper_(helper) {} | 
| + | 
| +NativePixmapDmaBuf::~NativePixmapDmaBuf() {} | 
| + | 
| +void* NativePixmapDmaBuf::GetEGLClientBuffer() const { | 
| +  return nullptr; | 
| +} | 
| + | 
| +bool NativePixmapDmaBuf::AreDmaBufFdsValid() const { | 
| +  return helper_->AreFdsValid(); | 
| +} | 
| + | 
| +size_t NativePixmapDmaBuf::GetDmaBufFdCount() const { | 
| +  return helper_->GetFdCount(); | 
| +} | 
| + | 
| +int NativePixmapDmaBuf::GetDmaBufFd(size_t plane) const { | 
| +  return helper_->GetFd(plane); | 
| +} | 
| + | 
| +int NativePixmapDmaBuf::GetDmaBufPitch(size_t plane) const { | 
| +  return helper_->GetStride(plane); | 
| +} | 
| + | 
| +int NativePixmapDmaBuf::GetDmaBufOffset(size_t plane) const { | 
| +  return helper_->GetOffset(plane); | 
| +} | 
| + | 
| +uint64_t NativePixmapDmaBuf::GetDmaBufModifier(size_t plane) const { | 
| +  return helper_->GetFormatModifier(plane); | 
| +} | 
| + | 
| +gfx::BufferFormat NativePixmapDmaBuf::GetBufferFormat() const { | 
| +  return format_; | 
| +} | 
| + | 
| +gfx::Size NativePixmapDmaBuf::GetBufferSize() const { | 
| +  return size_; | 
| +} | 
| + | 
| +bool NativePixmapDmaBuf::ScheduleOverlayPlane( | 
| +    gfx::AcceleratedWidget widget, | 
| +    int plane_z_order, | 
| +    gfx::OverlayTransform plane_transform, | 
| +    const gfx::Rect& display_bounds, | 
| +    const gfx::RectF& crop_rect) { | 
| +  return false; | 
| +} | 
| + | 
| +void NativePixmapDmaBuf::SetProcessingCallback( | 
| +    const ProcessingCallback& processing_callback) {} | 
| + | 
| +gfx::NativePixmapHandle NativePixmapDmaBuf::ExportHandle() { | 
| +  return gfx::NativePixmapHandle(); | 
| +} | 
| + | 
| +}  // namespace gfx | 
|  |