Index: ui/ozone/platform/drm/gpu/hardware_display_controller.cc |
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc |
index 4ea1e2a0210ea4ba31cee4b0195df33c0efd832b..ec411f4fcad5aafdf1cd1423556d0a26b377caf9 100644 |
--- a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc |
+++ b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc |
@@ -145,6 +145,28 @@ bool HardwareDisplayController::IsFormatSupported(uint32_t fourcc_format, |
return true; |
} |
+std::vector<uint64_t> HardwareDisplayController::GetFormatModifiers( |
+ uint32_t format) { |
+ std::vector<uint64_t> modifiers; |
+ |
+ if (crtc_controllers_.empty()) |
+ return modifiers; |
+ |
+ modifiers = crtc_controllers_[0]->GetFormatModifiers(format); |
+ |
+ for (size_t i = 1; i < crtc_controllers_.size(); ++i) { |
+ std::vector<uint64_t> other = |
+ crtc_controllers_[i]->GetFormatModifiers(format); |
+ std::vector<uint64_t> intersection; |
+ |
+ std::set_intersection(modifiers.begin(), modifiers.end(), other.begin(), |
+ other.end(), std::back_inserter(intersection)); |
+ modifiers = std::move(intersection); |
+ } |
+ |
+ return modifiers; |
+} |
+ |
bool HardwareDisplayController::SetCursor( |
const scoped_refptr<ScanoutBuffer>& buffer) { |
bool status = true; |