| Index: ui/ozone/platform/drm/common/native_pixmap_manager_gbm.cc
|
| diff --git a/ui/ozone/platform/drm/common/native_pixmap_manager_gbm.cc b/ui/ozone/platform/drm/common/native_pixmap_manager_gbm.cc
|
| index ee6fcebca33e0c7f03b54e4e30a53937c2c692f2..4b0c4e6a25a604f3ae75ce8c86e339440d8a6616 100644
|
| --- a/ui/ozone/platform/drm/common/native_pixmap_manager_gbm.cc
|
| +++ b/ui/ozone/platform/drm/common/native_pixmap_manager_gbm.cc
|
| @@ -5,9 +5,27 @@
|
| #include "ui/ozone/platform/drm/common/native_pixmap_manager_gbm.h"
|
|
|
| #include "base/file_descriptor_posix.h"
|
| +#include "ui/ozone/platform/drm/gpu/vgem_pixmap.h"
|
|
|
| namespace ui {
|
|
|
| +namespace {
|
| +
|
| +NativePixmap::BufferUsage NativePixmapBufferUsageFromSurfaceFactoryOzone(
|
| + SurfaceFactoryOzone::BufferUsage usage) {
|
| + switch (usage) {
|
| + case SurfaceFactoryOzone::MAP:
|
| + return NativePixmap::MAP;
|
| + case SurfaceFactoryOzone::PERSISTENT_MAP:
|
| + return NativePixmap::PERSISTENT_MAP;
|
| + case SurfaceFactoryOzone::SCANOUT:
|
| + return NativePixmap::SCANOUT;
|
| + }
|
| + NOTREACHED();
|
| + return NativePixmap::SCANOUT;
|
| +}
|
| +}
|
| +
|
| NativePixmapManager* CreateNativePixmapManagerGbm() {
|
| return new NativePixmapManagerGbm();
|
| }
|
| @@ -29,7 +47,26 @@ NativePixmapManagerGbm::GetSupportedNativePixmapConfigurations() const {
|
| std::vector<Configuration> configurations = {
|
| {SurfaceFactoryOzone::BGRA_8888, SurfaceFactoryOzone::SCANOUT},
|
| {SurfaceFactoryOzone::RGBX_8888, SurfaceFactoryOzone::SCANOUT}};
|
| + // Map requires VGEM supports.
|
| + if (vgem_fd_.is_valid()) {
|
| + configurations.push_back(
|
| + {SurfaceFactoryOzone::BGRA_8888, SurfaceFactoryOzone::MAP});
|
| + }
|
| return configurations;
|
| }
|
|
|
| +scoped_refptr<NativePixmap> NativePixmapManagerGbm::CreateFromFileDescriptor(
|
| + base::FileDescriptor handle,
|
| + gfx::Size size,
|
| + SurfaceFactoryOzone::BufferFormat format,
|
| + SurfaceFactoryOzone::BufferUsage usage) {
|
| + scoped_refptr<VgemPixmap> pixmap(new VgemPixmap(
|
| + handle, base::FileDescriptor(vgem_fd_.get(), false), size, format,
|
| + NativePixmapBufferUsageFromSurfaceFactoryOzone(usage)));
|
| + if (!pixmap->Initialize())
|
| + return nullptr;
|
| +
|
| + return pixmap;
|
| +}
|
| +
|
| } // namespace ui
|
|
|