Chromium Code Reviews| Index: ui/ozone/platform/drm/gpu/hardware_display_plane.cc |
| diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane.cc |
| index 54f59188aba79c9e711776d76a89bfae75056987..3d16a6ae9661a22d317b0289d159712ec8329524 100644 |
| --- a/ui/ozone/platform/drm/gpu/hardware_display_plane.cc |
| +++ b/ui/ozone/platform/drm/gpu/hardware_display_plane.cc |
| @@ -5,6 +5,7 @@ |
| #include "ui/ozone/platform/drm/gpu/hardware_display_plane.h" |
| #include <drm_fourcc.h> |
| +#include <drm_mode.h> |
| #include "base/logging.h" |
| #include "ui/ozone/platform/drm/gpu/drm_device.h" |
| @@ -56,9 +57,16 @@ bool HardwareDisplayPlane::CanUseForCrtc(uint32_t crtc_index) { |
| bool HardwareDisplayPlane::Initialize(DrmDevice* drm, |
| const std::vector<uint32_t>& formats, |
| + const std::vector<struct drm_format_info>& format_info, |
| bool is_dummy, |
| bool test_only) { |
| supported_formats_ = formats; |
| + supported_format_info_ = format_info; |
| + |
| + for (auto& element : supported_format_info_) { |
|
Daniele Castagna
2016/12/16 00:27:41
Was this for debugging?
hoegsberg1
2016/12/17 01:10:49
Yeah, removed it.
|
| + LOG(ERROR) << " format info: modifier=" << element.modifier << ", formats=" << element.formats; |
| + } |
| + |
| if (test_only) |
| return true; |
| @@ -112,6 +120,24 @@ const std::vector<uint32_t>& HardwareDisplayPlane::supported_formats() const { |
| return supported_formats_; |
| } |
| +uint32_t HardwareDisplayPlane::ModifiersForFormat(uint32_t format, uint64_t *modifiers, uint32_t count) { |
| + uint32_t format_index = 0; |
| + for (const auto& f : supported_formats_) { |
| + if (f == format) |
| + break; |
| + format_index++; |
| + } |
| + DCHECK(format_index < supported_formats_.size()); |
|
Daniele Castagna
2016/12/16 00:27:41
nit: DCHECK_LT
hoegsberg1
2016/12/17 01:10:49
Done - what's better about DCHECK_LT though?
|
| + |
| + uint32_t i = 0; |
| + for (const auto& info : supported_format_info_) { |
| + if (info.formats & (1 << format_index) && i < count) |
| + modifiers[i++] = info.modifier; |
| + } |
| + |
| + return i; |
| +} |
| + |
| bool HardwareDisplayPlane::InitializeProperties( |
| DrmDevice* drm, |
| const ScopedDrmObjectPropertyPtr& plane_props) { |