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

Side by Side Diff: ui/ozone/platform/dri/dri_wrapper.cc

Issue 371813004: ozone: gbm: Add overlay support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix test code Created 6 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/ozone/platform/dri/dri_wrapper.h" 5 #include "ui/ozone/platform/dri/dri_wrapper.h"
6 6
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <unistd.h> 8 #include <unistd.h>
9 #include <xf86drm.h> 9 #include <xf86drm.h>
10 #include <xf86drmMode.h> 10 #include <xf86drmMode.h>
11 11
12 #include "base/logging.h" 12 #include "base/logging.h"
13 13
14 namespace ui { 14 namespace ui {
15 namespace {
16 int ToFixedPoint(double v) {
dnicoara 2014/07/07 19:17:54 Return an uint32_t please.
achaulk 2014/07/07 20:18:04 Done.
17 return v * 65536.0;
dnicoara 2014/07/07 19:17:54 Could you please add a comment (maybe to this func
achaulk 2014/07/07 20:18:04 Sure
18 }
19 } // namespace
15 20
16 DriWrapper::DriWrapper(const char* device_path) { 21 DriWrapper::DriWrapper(const char* device_path) {
17 fd_ = open(device_path, O_RDWR | O_CLOEXEC); 22 fd_ = open(device_path, O_RDWR | O_CLOEXEC);
18 } 23 }
19 24
20 DriWrapper::~DriWrapper() { 25 DriWrapper::~DriWrapper() {
21 if (fd_ >= 0) 26 if (fd_ >= 0)
22 close(fd_); 27 close(fd_);
23 } 28 }
24 29
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 uint32_t framebuffer, 84 uint32_t framebuffer,
80 void* data) { 85 void* data) {
81 CHECK(fd_ >= 0); 86 CHECK(fd_ >= 0);
82 return !drmModePageFlip(fd_, 87 return !drmModePageFlip(fd_,
83 crtc_id, 88 crtc_id,
84 framebuffer, 89 framebuffer,
85 DRM_MODE_PAGE_FLIP_EVENT, 90 DRM_MODE_PAGE_FLIP_EVENT,
86 data); 91 data);
87 } 92 }
88 93
94 bool DriWrapper::PageFlipOverlay(uint32_t crtc_id,
95 uint32_t framebuffer,
96 const gfx::Rect& location,
97 const gfx::RectF& source,
98 int overlay_plane) {
99 CHECK(fd_ >= 0);
100 return !drmModeSetPlane(fd_,
101 overlay_plane,
102 crtc_id,
103 framebuffer,
104 0,
105 location.x(),
106 location.y(),
107 location.width(),
108 location.height(),
109 ToFixedPoint(source.x()),
110 ToFixedPoint(source.y()),
111 ToFixedPoint(source.width()),
112 ToFixedPoint(source.height()));
113 }
114
89 ScopedDrmFramebufferPtr DriWrapper::GetFramebuffer(uint32_t framebuffer) { 115 ScopedDrmFramebufferPtr DriWrapper::GetFramebuffer(uint32_t framebuffer) {
90 CHECK(fd_ >= 0); 116 CHECK(fd_ >= 0);
91 return ScopedDrmFramebufferPtr(drmModeGetFB(fd_, framebuffer)); 117 return ScopedDrmFramebufferPtr(drmModeGetFB(fd_, framebuffer));
92 } 118 }
93 119
94 ScopedDrmPropertyPtr DriWrapper::GetProperty(drmModeConnector* connector, 120 ScopedDrmPropertyPtr DriWrapper::GetProperty(drmModeConnector* connector,
95 const char* name) { 121 const char* name) {
96 for (int i = 0; i < connector->count_props; ++i) { 122 for (int i = 0; i < connector->count_props; ++i) {
97 ScopedDrmPropertyPtr property(drmModeGetProperty(fd_, connector->props[i])); 123 ScopedDrmPropertyPtr property(drmModeGetProperty(fd_, connector->props[i]));
98 if (!property) 124 if (!property)
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 CHECK(fd_ >= 0); 167 CHECK(fd_ >= 0);
142 return !drmModeMoveCursor(fd_, crtc_id, x, y); 168 return !drmModeMoveCursor(fd_, crtc_id, x, y);
143 } 169 }
144 170
145 void DriWrapper::HandleEvent(drmEventContext& event) { 171 void DriWrapper::HandleEvent(drmEventContext& event) {
146 CHECK(fd_ >= 0); 172 CHECK(fd_ >= 0);
147 drmHandleEvent(fd_, &event); 173 drmHandleEvent(fd_, &event);
148 } 174 }
149 175
150 } // namespace ui 176 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698