| OLD | NEW |
| 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/drm/gpu/hardware_display_plane_manager.h" | 5 #include "ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h" |
| 6 | 6 |
| 7 #include <drm_fourcc.h> | 7 #include <drm_fourcc.h> |
| 8 | 8 |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 CreatePlane(resources->crtcs[i] - 1, (1 << i))); | 123 CreatePlane(resources->crtcs[i] - 1, (1 << i))); |
| 124 if (dummy_plane->Initialize(drm, std::vector<uint32_t>(), true, | 124 if (dummy_plane->Initialize(drm, std::vector<uint32_t>(), true, |
| 125 false)) { | 125 false)) { |
| 126 planes_.push_back(dummy_plane.Pass()); | 126 planes_.push_back(dummy_plane.Pass()); |
| 127 } | 127 } |
| 128 } | 128 } |
| 129 } | 129 } |
| 130 } | 130 } |
| 131 | 131 |
| 132 std::sort(planes_.begin(), planes_.end(), | 132 std::sort(planes_.begin(), planes_.end(), |
| 133 [](HardwareDisplayPlane* l, HardwareDisplayPlane* r) { | 133 [](const scoped_ptr<HardwareDisplayPlane>& l, |
| 134 const scoped_ptr<HardwareDisplayPlane>& r) { |
| 134 return l->plane_id() < r->plane_id(); | 135 return l->plane_id() < r->plane_id(); |
| 135 }); | 136 }); |
| 136 return true; | 137 return true; |
| 137 } | 138 } |
| 138 | 139 |
| 139 scoped_ptr<HardwareDisplayPlane> HardwareDisplayPlaneManager::CreatePlane( | 140 scoped_ptr<HardwareDisplayPlane> HardwareDisplayPlaneManager::CreatePlane( |
| 140 uint32_t plane_id, | 141 uint32_t plane_id, |
| 141 uint32_t possible_crtcs) { | 142 uint32_t possible_crtcs) { |
| 142 return scoped_ptr<HardwareDisplayPlane>( | 143 return scoped_ptr<HardwareDisplayPlane>( |
| 143 new HardwareDisplayPlane(plane_id, possible_crtcs)); | 144 new HardwareDisplayPlane(plane_id, possible_crtcs)); |
| 144 } | 145 } |
| 145 | 146 |
| 146 HardwareDisplayPlane* HardwareDisplayPlaneManager::FindNextUnusedPlane( | 147 HardwareDisplayPlane* HardwareDisplayPlaneManager::FindNextUnusedPlane( |
| 147 size_t* index, | 148 size_t* index, |
| 148 uint32_t crtc_index, | 149 uint32_t crtc_index, |
| 149 const OverlayPlane& overlay) const { | 150 const OverlayPlane& overlay) const { |
| 150 for (size_t i = *index; i < planes_.size(); ++i) { | 151 for (size_t i = *index; i < planes_.size(); ++i) { |
| 151 auto plane = planes_[i]; | 152 auto plane = planes_[i].get(); |
| 152 if (!plane->in_use() && IsCompatible(plane, overlay, crtc_index)) { | 153 if (!plane->in_use() && IsCompatible(plane, overlay, crtc_index)) { |
| 153 *index = i + 1; | 154 *index = i + 1; |
| 154 return plane; | 155 return plane; |
| 155 } | 156 } |
| 156 } | 157 } |
| 157 return nullptr; | 158 return nullptr; |
| 158 } | 159 } |
| 159 | 160 |
| 160 int HardwareDisplayPlaneManager::LookupCrtcIndex(uint32_t crtc_id) const { | 161 int HardwareDisplayPlaneManager::LookupCrtcIndex(uint32_t crtc_id) const { |
| 161 for (size_t i = 0; i < crtcs_.size(); ++i) | 162 for (size_t i = 0; i < crtcs_.size(); ++i) |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 HardwareDisplayPlaneManager::GetCompatibleHardwarePlaneIds( | 283 HardwareDisplayPlaneManager::GetCompatibleHardwarePlaneIds( |
| 283 const OverlayPlane& plane, | 284 const OverlayPlane& plane, |
| 284 uint32_t crtc_id) const { | 285 uint32_t crtc_id) const { |
| 285 int crtc_index = LookupCrtcIndex(crtc_id); | 286 int crtc_index = LookupCrtcIndex(crtc_id); |
| 286 if (crtc_index < 0) { | 287 if (crtc_index < 0) { |
| 287 LOG(ERROR) << "Cannot find crtc " << crtc_id; | 288 LOG(ERROR) << "Cannot find crtc " << crtc_id; |
| 288 return std::vector<uint32_t>(); | 289 return std::vector<uint32_t>(); |
| 289 } | 290 } |
| 290 | 291 |
| 291 std::vector<uint32_t> plane_ids; | 292 std::vector<uint32_t> plane_ids; |
| 292 for (auto* hardware_plane : planes_) { | 293 for (const auto& hardware_plane : planes_) { |
| 293 if (IsCompatible(hardware_plane, plane, crtc_index)) | 294 if (IsCompatible(hardware_plane.get(), plane, crtc_index)) |
| 294 plane_ids.push_back(hardware_plane->plane_id()); | 295 plane_ids.push_back(hardware_plane->plane_id()); |
| 295 } | 296 } |
| 296 | 297 |
| 297 return plane_ids; | 298 return plane_ids; |
| 298 } | 299 } |
| 299 | 300 |
| 300 } // namespace ui | 301 } // namespace ui |
| OLD | NEW |