1 // Copyright 2015 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_OZONE_PLATFORM_DRM_GPU_DRM_DISPLAY_H_ 6 #define UI_OZONE_PLATFORM_DRM_GPU_DRM_DISPLAY_H_ 7 8 #include <stddef.h> 9 #include <stdint.h> 10 #include <memory> 11 #include <vector> 12 13 #include "base/macros.h" 14 #include "base/memory/ref_counted.h" 15 #include "ui/display/types/display_constants.h" 16 #include "ui/gfx/geometry/point.h" 17 #include "ui/ozone/common/gpu/ozone_gpu_message_params.h" 18 #include "ui/ozone/platform/drm/common/scoped_drm_types.h" 19 20 typedef struct _drmModeModeInfo drmModeModeInfo; 21 22 namespace display { 23 class DisplaySnapshot; 24 struct GammaRampRGBEntry; 25 } 26 27 namespace ui { 28 29 class DrmDevice; 30 class HardwareDisplayControllerInfo; 31 class ScreenManager; 32 33 class DrmDisplay { 34 public: 35 DrmDisplay(ScreenManager* screen_manager, 36 const scoped_refptr<DrmDevice>& drm); 37 ~DrmDisplay(); 38 display_id()39 int64_t display_id() const { return display_id_; } drm()40 scoped_refptr<DrmDevice> drm() const { return drm_; } crtc()41 uint32_t crtc() const { return crtc_; } 42 uint32_t connector() const; modes()43 const std::vector<drmModeModeInfo>& modes() const { return modes_; } 44 45 std::unique_ptr<display::DisplaySnapshot> Update( 46 HardwareDisplayControllerInfo* info, 47 size_t device_index); 48 49 bool Configure(const drmModeModeInfo* mode, const gfx::Point& origin); 50 bool GetHDCPState(display::HDCPState* state); 51 bool SetHDCPState(display::HDCPState state); 52 void SetColorMatrix(const std::vector<float>& color_matrix); 53 void SetBackgroundColor(const uint64_t background_color); 54 void SetGammaCorrection( 55 const std::vector<display::GammaRampRGBEntry>& degamma_lut, 56 const std::vector<display::GammaRampRGBEntry>& gamma_lut); 57 void SetPrivacyScreen(bool enabled); 58 59 private: 60 ScreenManager* screen_manager_; // Not owned. 61 62 int64_t display_id_ = -1; 63 const scoped_refptr<DrmDevice> drm_; 64 uint32_t crtc_ = 0; 65 ScopedDrmConnectorPtr connector_; 66 std::vector<drmModeModeInfo> modes_; 67 gfx::Point origin_; 68 69 DISALLOW_COPY_AND_ASSIGN(DrmDisplay); 70 }; 71 72 } // namespace ui 73 74 #endif // UI_OZONE_PLATFORM_DRM_GPU_DRM_DISPLAY_H_ 75