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 4b0c4e6a25a604f3ae75ce8c86e339440d8a6616..93a7f1071044af4d9e790e5a4ee12fb822eb20b4 100644 |
--- a/ui/ozone/platform/drm/common/native_pixmap_manager_gbm.cc |
+++ b/ui/ozone/platform/drm/common/native_pixmap_manager_gbm.cc |
@@ -7,6 +7,10 @@ |
#include "base/file_descriptor_posix.h" |
#include "ui/ozone/platform/drm/gpu/vgem_pixmap.h" |
+#include "base/command_line.h" |
+#include "ui/ozone/platform/drm/gpu/intel_drm_pixmap.h" |
+#include "ui/ozone/public/ozone_switches.h" |
+ |
namespace ui { |
namespace { |
@@ -60,6 +64,13 @@ scoped_refptr<NativePixmap> NativePixmapManagerGbm::CreateFromFileDescriptor( |
gfx::Size size, |
SurfaceFactoryOzone::BufferFormat format, |
SurfaceFactoryOzone::BufferUsage usage) { |
+ bool enable_intel_drm = base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kOzoneUseIntelDrm); |
+ if (enable_intel_drm && usage == SurfaceFactoryOzone::MAP) { |
+ return IntelDrmPixmap::CreateFromHandle( |
+ base::FileDescriptor(vgem_fd_.get(), false), handle, format, size); |
+ } |
+ |
scoped_refptr<VgemPixmap> pixmap(new VgemPixmap( |
handle, base::FileDescriptor(vgem_fd_.get(), false), size, format, |
NativePixmapBufferUsageFromSurfaceFactoryOzone(usage))); |