| Index: ui/ozone/platform/drm/gpu/drm_intel_buffer_manager.cc
|
| diff --git a/ui/ozone/platform/drm/gpu/drm_intel_buffer_manager.cc b/ui/ozone/platform/drm/gpu/drm_intel_buffer_manager.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3585aa720dc53c3beb4dc6db63050cbbc7c1146b
|
| --- /dev/null
|
| +++ b/ui/ozone/platform/drm/gpu/drm_intel_buffer_manager.cc
|
| @@ -0,0 +1,52 @@
|
| +// Copyright 2015 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/ozone/public/platform/drm_intel_buffer_manager.h"
|
| +
|
| +extern "C" {
|
| +#include <libdrm/intel_bufmgr.h>
|
| +}
|
| +
|
| +#include "base/files/scoped_file.h"
|
| +
|
| +namespace ui {
|
| +
|
| +DrmIntelBufferManager::DrmIntelBufferManager() : buffer_manager_(nullptr) {
|
| +}
|
| +
|
| +DrmIntelBufferManager::~DrmIntelBufferManager() {
|
| + if (buffer_manager_)
|
| + drm_intel_bufmgr_destroy(buffer_manager_);
|
| + if (device_fd_.auto_close)
|
| + base::ScopedFD closing_fd(device_fd_.fd);
|
| +}
|
| +
|
| +bool DrmIntelBufferManager::Initialize(const base::FileDescriptor& device_fd) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + if (buffer_manager_)
|
| + return true;
|
| +
|
| + device_fd_ = device_fd;
|
| +
|
| + // TODO(dshwang): drm bufmgr doesn't need an execbuffer, so batch size is 0.
|
| + const int kBatchSize = 16 * 4096;
|
| + buffer_manager_ = drm_intel_bufmgr_gem_init(device_fd_.fd, kBatchSize);
|
| + if (!buffer_manager_) {
|
| + DLOG(ERROR) << "drm_intel_bufmgr_gem_init failed.";
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +drm_intel_bufmgr* DrmIntelBufferManager::buffer_manager() const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + return buffer_manager_;
|
| +}
|
| +
|
| +int DrmIntelBufferManager::device_fd() const {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + return device_fd_.fd;
|
| +}
|
| +
|
| +} // namespace ui
|
|
|