blob: e1c9d333019ad38911b59667df9e0486c5ed404b [file] [log] [blame]
Daniel Nicoara0a60e4b2017-01-09 12:51:06 -05001/*
2 * Copyright 2017 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_HARDWARE_GRAPHICS_COMPOSER_V2_1_COMPOSER_BASE_H
18#define ANDROID_HARDWARE_GRAPHICS_COMPOSER_V2_1_COMPOSER_BASE_H
19
20#include <android/hardware/graphics/composer/2.1/IComposer.h>
21#include <hardware/hwcomposer2.h>
22
23namespace android {
24namespace hardware {
25namespace graphics {
26namespace composer {
27namespace V2_1 {
28namespace implementation {
29
30using android::hardware::graphics::common::V1_0::PixelFormat;
31using android::hardware::graphics::common::V1_0::Transform;
32using android::hardware::graphics::common::V1_0::Dataspace;
33using android::hardware::graphics::common::V1_0::ColorMode;
34using android::hardware::graphics::common::V1_0::ColorTransform;
35using android::hardware::graphics::common::V1_0::Hdr;
36
37class ComposerBase {
38public:
39 virtual ~ComposerBase() {};
40
Chia-I Wucdc287b2017-12-11 10:27:50 -080041 virtual bool hasCapability(hwc2_capability_t capability) = 0;
42
Daniel Nicoara0a60e4b2017-01-09 12:51:06 -050043 virtual void removeClient() = 0;
44 virtual void enableCallback(bool enable) = 0;
45 virtual uint32_t getMaxVirtualDisplayCount() = 0;
46 virtual Error createVirtualDisplay(uint32_t width, uint32_t height,
47 PixelFormat* format, Display* outDisplay) = 0;
48 virtual Error destroyVirtualDisplay(Display display) = 0;
49 virtual Error createLayer(Display display, Layer* outLayer) = 0;
50 virtual Error destroyLayer(Display display, Layer layer) = 0;
51
52 virtual Error getActiveConfig(Display display, Config* outConfig) = 0;
53 virtual Error getClientTargetSupport(Display display,
54 uint32_t width, uint32_t height,
55 PixelFormat format, Dataspace dataspace) = 0;
56 virtual Error getColorModes(Display display,
57 hidl_vec<ColorMode>* outModes) = 0;
58 virtual Error getDisplayAttribute(Display display, Config config,
59 IComposerClient::Attribute attribute, int32_t* outValue) = 0;
60 virtual Error getDisplayConfigs(Display display,
61 hidl_vec<Config>* outConfigs) = 0;
62 virtual Error getDisplayName(Display display, hidl_string* outName) = 0;
63 virtual Error getDisplayType(Display display,
64 IComposerClient::DisplayType* outType) = 0;
65 virtual Error getDozeSupport(Display display, bool* outSupport) = 0;
66 virtual Error getHdrCapabilities(Display display, hidl_vec<Hdr>* outTypes,
67 float* outMaxLuminance, float* outMaxAverageLuminance,
68 float* outMinLuminance) = 0;
69
70 virtual Error setActiveConfig(Display display, Config config) = 0;
71 virtual Error setColorMode(Display display, ColorMode mode) = 0;
72 virtual Error setPowerMode(Display display,
73 IComposerClient::PowerMode mode) = 0;
74 virtual Error setVsyncEnabled(Display display,
75 IComposerClient::Vsync enabled) = 0;
76
77 virtual Error setColorTransform(Display display, const float* matrix,
78 int32_t hint) = 0;
79 virtual Error setClientTarget(Display display, buffer_handle_t target,
80 int32_t acquireFence, int32_t dataspace,
81 const std::vector<hwc_rect_t>& damage) = 0;
82 virtual Error setOutputBuffer(Display display, buffer_handle_t buffer,
83 int32_t releaseFence) = 0;
84 virtual Error validateDisplay(Display display,
85 std::vector<Layer>* outChangedLayers,
86 std::vector<IComposerClient::Composition>* outCompositionTypes,
87 uint32_t* outDisplayRequestMask,
88 std::vector<Layer>* outRequestedLayers,
89 std::vector<uint32_t>* outRequestMasks) = 0;
90 virtual Error acceptDisplayChanges(Display display) = 0;
91 virtual Error presentDisplay(Display display, int32_t* outPresentFence,
92 std::vector<Layer>* outLayers,
93 std::vector<int32_t>* outReleaseFences) = 0;
94
95 virtual Error setLayerCursorPosition(Display display, Layer layer,
96 int32_t x, int32_t y) = 0;
97 virtual Error setLayerBuffer(Display display, Layer layer,
98 buffer_handle_t buffer, int32_t acquireFence) = 0;
99 virtual Error setLayerSurfaceDamage(Display display, Layer layer,
100 const std::vector<hwc_rect_t>& damage) = 0;
101 virtual Error setLayerBlendMode(Display display, Layer layer,
102 int32_t mode) = 0;
103 virtual Error setLayerColor(Display display, Layer layer,
104 IComposerClient::Color color) = 0;
105 virtual Error setLayerCompositionType(Display display, Layer layer,
106 int32_t type) = 0;
107 virtual Error setLayerDataspace(Display display, Layer layer,
108 int32_t dataspace) = 0;
109 virtual Error setLayerDisplayFrame(Display display, Layer layer,
110 const hwc_rect_t& frame) = 0;
111 virtual Error setLayerPlaneAlpha(Display display, Layer layer,
112 float alpha) = 0;
113 virtual Error setLayerSidebandStream(Display display, Layer layer,
114 buffer_handle_t stream) = 0;
115 virtual Error setLayerSourceCrop(Display display, Layer layer,
116 const hwc_frect_t& crop) = 0;
117 virtual Error setLayerTransform(Display display, Layer layer,
118 int32_t transform) = 0;
119 virtual Error setLayerVisibleRegion(Display display, Layer layer,
120 const std::vector<hwc_rect_t>& visible) = 0;
121 virtual Error setLayerZOrder(Display display, Layer layer,
122 uint32_t z) = 0;
123};
124
125} // namespace implementation
126} // namespace V2_1
127} // namespace composer
128} // namespace graphics
129} // namespace hardware
130} // namespace android
131
132#endif // ANDROID_HARDWARE_GRAPHICS_COMPOSER_V2_1_COMPOSER_BASE_H