Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Unified Diff: ui/ozone/platform/dri/ozone_platform_gbm.cc

Issue 905873003: [8/8][Ozone-Dri] Pass DRM FD to GPU process on hotplug event (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@udl2.9-allow-ndd-to-handle-multiple-drm-devices
Patch Set: . Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/ozone/platform/dri/ozone_platform_dri.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/platform/dri/ozone_platform_gbm.cc
diff --git a/ui/ozone/platform/dri/ozone_platform_gbm.cc b/ui/ozone/platform/dri/ozone_platform_gbm.cc
index a5b674232943a80424a4747a4d63613bca07af5c..60a7de217f32ed4a63a7471ae39f94d54a61d2e5 100644
--- a/ui/ozone/platform/dri/ozone_platform_gbm.cc
+++ b/ui/ozone/platform/dri/ozone_platform_gbm.cc
@@ -23,6 +23,7 @@
#include "ui/ozone/platform/dri/dri_window.h"
#include "ui/ozone/platform/dri/dri_window_delegate_manager.h"
#include "ui/ozone/platform/dri/dri_window_manager.h"
+#include "ui/ozone/platform/dri/drm_device_generator.h"
#include "ui/ozone/platform/dri/drm_device_manager.h"
#include "ui/ozone/platform/dri/gbm_buffer.h"
#include "ui/ozone/platform/dri/gbm_surface.h"
@@ -74,6 +75,7 @@ class GbmBufferGenerator : public ScanoutBufferGenerator {
GbmBufferGenerator() {}
~GbmBufferGenerator() override {}
+ // ScanoutBufferGenerator:
scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DriWrapper>& drm,
const gfx::Size& size) override {
scoped_refptr<GbmWrapper> gbm(static_cast<GbmWrapper*>(drm.get()));
@@ -85,6 +87,23 @@ class GbmBufferGenerator : public ScanoutBufferGenerator {
DISALLOW_COPY_AND_ASSIGN(GbmBufferGenerator);
};
+class GbmDeviceGenerator : public DrmDeviceGenerator {
+ public:
+ GbmDeviceGenerator() {}
+ ~GbmDeviceGenerator() override {}
+
+ // DrmDeviceGenerator:
+ scoped_refptr<DriWrapper> CreateDevice(const base::FilePath& path,
+ base::File file) override {
+ scoped_refptr<DriWrapper> drm = new GbmWrapper(path, file.Pass());
+ drm->Initialize();
+ return drm;
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(GbmDeviceGenerator);
+};
+
class OzonePlatformGbm : public OzonePlatform {
public:
OzonePlatformGbm(bool use_surfaceless) : use_surfaceless_(use_surfaceless) {
@@ -168,8 +187,9 @@ class OzonePlatformGbm : public OzonePlatform {
surface_factory_ozone_->InitializeGpu(gbm_, drm_device_manager_.get(),
window_delegate_manager_.get());
- scoped_ptr<NativeDisplayDelegateDri> ndd(
- new NativeDisplayDelegateDri(screen_manager_.get(), gbm_));
+ scoped_ptr<NativeDisplayDelegateDri> ndd(new NativeDisplayDelegateDri(
+ screen_manager_.get(), gbm_,
+ scoped_ptr<DrmDeviceGenerator>(new GbmDeviceGenerator())));
gpu_platform_support_.reset(new DriGpuPlatformSupport(
drm_device_manager_.get(), window_delegate_manager_.get(),
screen_manager_.get(), ndd.Pass()));
« no previous file with comments | « ui/ozone/platform/dri/ozone_platform_dri.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698