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_PLANE_H_
18#define ANDROID_DRM_PLANE_H_
19
20#include "drmcrtc.h"
21#include "drmproperty.h"
22
23#include <stdint.h>
24#include <xf86drmMode.h>
25#include <vector>
26
27namespace android {
28
29class DrmResources;
30
31class DrmPlane {
32 public:
33  DrmPlane(DrmResources *drm, drmModePlanePtr p);
34  DrmPlane(const DrmPlane &) = delete;
35  DrmPlane &operator=(const DrmPlane &) = delete;
36
37  int Init();
38
39  uint32_t id() const;
40
41  bool GetCrtcSupported(const DrmCrtc &crtc) const;
42
43  uint32_t type() const;
44
45  const DrmProperty &crtc_property() const;
46  const DrmProperty &fb_property() const;
47  const DrmProperty &crtc_x_property() const;
48  const DrmProperty &crtc_y_property() const;
49  const DrmProperty &crtc_w_property() const;
50  const DrmProperty &crtc_h_property() const;
51  const DrmProperty &src_x_property() const;
52  const DrmProperty &src_y_property() const;
53  const DrmProperty &src_w_property() const;
54  const DrmProperty &src_h_property() const;
55  const DrmProperty &rotation_property() const;
56  const DrmProperty &alpha_property() const;
57
58 private:
59  DrmResources *drm_;
60  uint32_t id_;
61
62  uint32_t possible_crtc_mask_;
63
64  uint32_t type_;
65
66  DrmProperty crtc_property_;
67  DrmProperty fb_property_;
68  DrmProperty crtc_x_property_;
69  DrmProperty crtc_y_property_;
70  DrmProperty crtc_w_property_;
71  DrmProperty crtc_h_property_;
72  DrmProperty src_x_property_;
73  DrmProperty src_y_property_;
74  DrmProperty src_w_property_;
75  DrmProperty src_h_property_;
76  DrmProperty rotation_property_;
77  DrmProperty alpha_property_;
78};
79}
80
81#endif  // ANDROID_DRM_PLANE_H_
82