1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef ANDROID_DRM_CRTC_H_ 18 #define ANDROID_DRM_CRTC_H_ 19 20 #include "drmmode.h" 21 #include "drmproperty.h" 22 23 #include <stdint.h> 24 #include <xf86drmMode.h> 25 26 namespace android { 27 28 class DrmDevice; 29 30 class DrmCrtc { 31 public: 32 DrmCrtc(DrmDevice *drm, drmModeCrtcPtr c, unsigned pipe); 33 DrmCrtc(const DrmCrtc &) = delete; 34 DrmCrtc &operator=(const DrmCrtc &) = delete; 35 36 int Init(); 37 38 uint32_t id() const; 39 unsigned pipe() const; 40 41 const std::vector<int>& displays() const; 42 bool has_display(const int display) const; 43 void set_display(int display); 44 45 bool can_bind(int display) const; 46 47 const DrmProperty &active_property() const; 48 const DrmProperty &mode_property() const; 49 const DrmProperty &out_fence_ptr_property() const; 50 const DrmProperty &cgc_lut_property() const; 51 const DrmProperty &cgc_lut_fd_property() const; 52 const DrmProperty °amma_lut_property() const; 53 const DrmProperty °amma_lut_size_property() const; 54 const DrmProperty &gamma_lut_property() const; 55 const DrmProperty &gamma_lut_size_property() const; 56 const DrmProperty &linear_matrix_property() const; 57 const DrmProperty &gamma_matrix_property() const; 58 const DrmProperty &partial_region_property() const; 59 const DrmProperty &force_bpc_property() const; 60 const DrmProperty &disp_dither_property() const; 61 const DrmProperty &cgc_dither_property() const; 62 DrmProperty &adjusted_vblank_property(); 63 const DrmProperty &ppc_property() const; 64 const DrmProperty &max_disp_freq_property() const; 65 const DrmProperty &dqe_enabled_property() const; 66 const DrmProperty &color_mode_property() const; 67 const DrmProperty &expected_present_time_property() const; 68 69 /* Histogram Properties */ 70 const DrmProperty &histogram_roi_property() const; 71 const DrmProperty &histogram_weights_property() const; 72 const DrmProperty &histogram_threshold_property() const; 73 const DrmProperty &histogram_position_property() const; 74 properties()75 const std::vector<DrmProperty *> &properties() const { 76 return properties_; 77 } 78 79 private: 80 DrmDevice *drm_; 81 82 uint32_t id_; 83 unsigned pipe_; 84 std::vector<int> displays_; 85 86 DrmMode mode_; 87 88 DrmProperty active_property_; 89 DrmProperty mode_property_; 90 DrmProperty out_fence_ptr_property_; 91 DrmProperty cgc_lut_property_; 92 DrmProperty cgc_lut_fd_property_; 93 DrmProperty degamma_lut_property_; 94 DrmProperty degamma_lut_size_property_; 95 DrmProperty gamma_lut_property_; 96 DrmProperty gamma_lut_size_property_; 97 DrmProperty linear_matrix_property_; 98 DrmProperty gamma_matrix_property_; 99 DrmProperty partial_region_property_; 100 DrmProperty force_bpc_property_; 101 DrmProperty disp_dither_property_; 102 DrmProperty cgc_dither_property_; 103 DrmProperty adjusted_vblank_property_; 104 DrmProperty ppc_property_; 105 DrmProperty max_disp_freq_property_; 106 DrmProperty dqe_enabled_property_; 107 DrmProperty color_mode_property_; 108 DrmProperty expected_present_time_property_; 109 110 /* Histogram Properties */ 111 DrmProperty histogram_roi_property_; 112 DrmProperty histogram_weights_property_; 113 DrmProperty histogram_threshold_property_; 114 DrmProperty histogram_position_property_; 115 116 std::vector<DrmProperty *> properties_; 117 }; 118 } // namespace android 119 120 #endif // ANDROID_DRM_CRTC_H_ 121