Index: ui/ozone/platform/drm/gpu/gbm_surface_factory.cc |
diff --git a/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc b/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc |
index 8b00f3fa22847a350775c769437929dcac4e3092..7528b981e3021a84730946f46f9bcae6aa6e7c5e 100644 |
--- a/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc |
+++ b/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc |
@@ -22,6 +22,10 @@ |
#include "ui/ozone/public/surface_ozone_canvas.h" |
#include "ui/ozone/public/surface_ozone_egl.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 { |
@@ -130,6 +134,16 @@ scoped_refptr<ui::NativePixmap> GbmSurfaceFactory::CreateNativePixmap( |
scoped_refptr<GbmDevice> gbm = GetGbmDevice(widget); |
DCHECK(gbm); |
+ bool enable_intel_drm = base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kOzoneUseIntelDrm); |
+ if (enable_intel_drm && usage == MAP) { |
+ scoped_refptr<IntelDrmPixmap> pixmap = IntelDrmPixmap::Create( |
+ base::FileDescriptor(gbm->get_fd(), false), format, size); |
+ if (!pixmap.get()) |
+ return nullptr; |
+ return pixmap; |
+ } |
+ |
scoped_refptr<GbmBuffer> buffer = |
GbmBuffer::CreateBuffer(gbm, format, size, usage == SCANOUT); |
if (!buffer.get()) |