summaryrefslogtreecommitdiff
path: root/hwc2/include/IDisplayDevice.h (plain)
blob: 0e78bdf723445d46c56e3fc31b6be734cd0dcbc2
1/*
2// Copyright (c) 2014 Intel Corporation
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// This file is modified by Amlogic, Inc. 2017.01.17.
17*/
18
19#ifndef IDISPLAY_DEVICE_H
20#define IDISPLAY_DEVICE_H
21
22#include <utils/KeyedVector.h>
23#include <Dump.h>
24#include <hardware/hwcomposer2.h>
25#include <Hwcomposer.h>
26#include <HwcLayer.h>
27
28namespace android {
29namespace amlogic {
30
31enum {
32 HWC2_NO_LAYER = 0,
33 HWC2_ONE_LAYER = 1,
34 HWC2_TWO_LAYERS = 2,
35 HWC2_THREE_LAYERS = 3,
36 HWC2_MAX_LAYERS = HWC2_THREE_LAYERS,
37};
38
39
40#define HWC2_HW_COMPOSE_WIDTH_MAX (1920)
41#define HWC2_HW_COMPOSE_HEIGHT_MAX (1080)
42
43// display device interface
44class IDisplayDevice {
45public:
46 // display device type
47 enum {
48 DEVICE_PRIMARY = HWC_DISPLAY_PRIMARY,
49 DEVICE_EXTERNAL = HWC_DISPLAY_EXTERNAL,
50 DEVICE_VIRTUAL = HWC_DISPLAY_VIRTUAL,
51 DEVICE_COUNT,
52 };
53 enum {
54 DEVICE_DISCONNECTED = 0,
55 DEVICE_CONNECTED,
56 };
57 enum {
58 DEVICE_DISPLAY_OFF = 0,
59 DEVICE_DISPLAY_ON,
60 DEVICE_DISPLAY_STANDBY,
61 };
62public:
63 IDisplayDevice() {}
64 virtual ~IDisplayDevice() {}
65public:
66 virtual int32_t acceptDisplayChanges() = 0;
67 virtual bool createLayer(hwc2_layer_t* outLayer) = 0;
68 virtual bool destroyLayer(hwc2_layer_t layer) = 0;
69 virtual int32_t getActiveConfig(hwc2_config_t* outConfig) = 0;
70 virtual int32_t getChangedCompositionTypes(uint32_t* outNumElements, hwc2_layer_t* outLayers,
71 int32_t* /*hwc2_composition_t*/ outTypes) = 0;
72 virtual int32_t getClientTargetSupport(uint32_t width,
73 uint32_t height, int32_t /*android_pixel_format_t*/ format,
74 int32_t /*android_dataspace_t*/ dataspace) = 0;
75 virtual int32_t getColorModes(uint32_t* outNumModes,
76 int32_t* /*android_color_mode_t*/ outModes) = 0;
77 virtual int32_t getDisplayAttribute(hwc2_config_t config,
78 int32_t /*hwc2_attribute_t*/ attribute, int32_t* outValue) = 0;
79 virtual int32_t getDisplayConfigs(uint32_t* outNumConfigs, hwc2_config_t* outConfigs) = 0;
80 virtual int32_t getDisplayName(uint32_t* outSize,char* outName) = 0;
81 virtual int32_t getDisplayRequests(int32_t* /*hwc2_display_request_t*/ outDisplayRequests,
82 uint32_t* outNumElements, hwc2_layer_t* outLayers, int32_t* /*hwc2_layer_request_t*/ outLayerRequests) = 0;
83 virtual int32_t getDisplayType(int32_t* /*hwc2_display_type_t*/ outType) = 0;
84 virtual int32_t getDozeSupport(int32_t* outSupport) = 0;
85 virtual int32_t getHdrCapabilities(uint32_t* outNumTypes,
86 int32_t* /*android_hdr_t*/ outTypes, float* outMaxLuminance,
87 float* outMaxAverageLuminance, float* outMinLuminance) = 0;
88 virtual int32_t getReleaseFences(uint32_t* outNumElements, hwc2_layer_t* outLayers, int32_t* outFences) = 0;
89 virtual int32_t presentDisplay(int32_t* outRetireFence) = 0;
90 virtual int32_t setActiveConfig(hwc2_config_t config) = 0;
91 virtual int32_t setClientTarget(buffer_handle_t target,
92 int32_t acquireFence, int32_t /*android_dataspace_t*/ dataspace, hwc_region_t damage) = 0;
93 virtual int32_t setColorMode(int32_t /*android_color_mode_t*/ mode) = 0;
94 virtual int32_t setColorTransform(const float* matrix, int32_t /*android_color_transform_t*/ hint) = 0;
95 // virtual int32_t setOutputBuffer(buffer_handle_t buffer, int32_t releaseFence) = 0;
96 virtual int32_t setPowerMode(int32_t /*hwc2_power_mode_t*/ mode) = 0;
97 virtual bool vsyncControl(bool enabled) = 0;
98 virtual int32_t validateDisplay(uint32_t* outNumTypes, uint32_t* outNumRequests) = 0;
99 virtual int32_t setCursorPosition(hwc2_layer_t layerId, int32_t x, int32_t y) = 0;
100
101 // Virtual display.
102 virtual int32_t createVirtualDisplay(uint32_t width, uint32_t height, int32_t* format, hwc2_display_t* outDisplay) = 0;
103 virtual int32_t destroyVirtualDisplay(hwc2_display_t display) = 0;
104 virtual int32_t setOutputBuffer(buffer_handle_t buffer, int32_t releaseFence) = 0;
105
106 // Other Display methods
107 virtual hwc2_display_t getId() const = 0;
108 virtual bool isConnected() const = 0;
109
110 // device related operations
111 virtual bool initCheck() const = 0;
112 virtual bool initialize() = 0;
113 virtual void deinitialize() = 0;
114 virtual const char* getName() const = 0;
115 virtual int getDisplayId() const = 0;
116
117 virtual HwcLayer* getLayerById(hwc2_layer_t layerId) = 0;
118
119 // events
120 virtual void onVsync(int64_t timestamp) = 0;
121 virtual void onHotplug(int disp, bool connected) = 0;
122 virtual void dump(Dump& d) = 0;
123
124};
125
126}
127}
128
129#endif /* IDISPLAY_DEVICE_H */
130