| Index: ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
|
| diff --git a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
|
| index 60b335bfaa429bcc04c425c8af45ec900b8b6dce..e2a66b1556910cedb080d5affa88df33beaa3e11 100644
|
| --- a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
|
| +++ b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
|
| @@ -236,6 +236,28 @@ void DrmGpuDisplayManager::RemoveGraphicsDevice(const base::FilePath& path) {
|
| devices_.erase(it);
|
| }
|
|
|
| +void DrmGpuDisplayManager::SetGammaRamp(int64_t id,
|
| + const std::vector<uint16_t>& r,
|
| + const std::vector<uint16_t>& g,
|
| + const std::vector<uint16_t>& b) {
|
| + DrmDisplaySnapshot* display = FindDisplaySnapshot(id);
|
| + if (!display) {
|
| + LOG(ERROR) << "There is no display with ID " << id;
|
| + return;
|
| + }
|
| +
|
| + if (r.size() != g.size() || g.size() != b.size()) {
|
| + LOG(ERROR) << "Gamma ramp channels must all the same length.";
|
| + }
|
| +
|
| + if (!display->drm()->SetGammaRamp(
|
| + display->crtc(), r.size(), const_cast<uint16_t*>(&r[0]),
|
| + const_cast<uint16_t*>(&g[0]), const_cast<uint16_t*>(&b[0]))) {
|
| + LOG(ERROR) << "Failed to set gamma ramp for display: crtc_id = "
|
| + << display->crtc() << " size = " << r.size();
|
| + }
|
| +}
|
| +
|
| DrmDisplaySnapshot* DrmGpuDisplayManager::FindDisplaySnapshot(int64_t id) {
|
| for (size_t i = 0; i < cached_displays_.size(); ++i)
|
| if (cached_displays_[i]->display_id() == id)
|
|
|