blob: b8f7c201c4b0f4447d15ce9c5bf2f08aaaa479c2 [file] [log] [blame]
Chia-I Wuaab99f52016-10-05 12:59:58 +08001/*
2 * Copyright 2016 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_SF_COMPOSER_HAL_H
18#define ANDROID_SF_COMPOSER_HAL_H
19
20#include <string>
21#include <vector>
22
23#include <android/hardware/graphics/composer/2.1/IComposer.h>
24#include <utils/StrongPointer.h>
25
26namespace android {
27
28namespace Hwc2 {
29
Chia-I Wu5901fda2016-11-17 10:26:37 +080030using android::hardware::graphics::common::V1_0::ColorMode;
31using android::hardware::graphics::common::V1_0::ColorTransform;
32using android::hardware::graphics::common::V1_0::Dataspace;
33using android::hardware::graphics::common::V1_0::Hdr;
34using android::hardware::graphics::common::V1_0::PixelFormat;
35using android::hardware::graphics::common::V1_0::Transform;
Chia-I Wuaab99f52016-10-05 12:59:58 +080036
37using android::hardware::graphics::composer::V2_1::IComposer;
38using android::hardware::graphics::composer::V2_1::IComposerCallback;
39using android::hardware::graphics::composer::V2_1::Error;
40using android::hardware::graphics::composer::V2_1::Display;
41using android::hardware::graphics::composer::V2_1::Layer;
42using android::hardware::graphics::composer::V2_1::Config;
43
Chia-I Wuaab99f52016-10-05 12:59:58 +080044// Composer is a wrapper to IComposer, a proxy to server-side composer.
45class Composer {
46public:
47 Composer();
48
49 std::vector<IComposer::Capability> getCapabilities() const;
50 std::string dumpDebugInfo() const;
51
52 void registerCallback(const sp<IComposerCallback>& callback) const;
53
54 uint32_t getMaxVirtualDisplayCount() const;
55 Error createVirtualDisplay(uint32_t width, uint32_t height,
56 PixelFormat& format, Display& display) const;
57 Error destroyVirtualDisplay(Display display) const;
58
59 Error acceptDisplayChanges(Display display) const;
60
61 Error createLayer(Display display, Layer& layer) const;
62 Error destroyLayer(Display display, Layer layer) const;
63
64 Error getActiveConfig(Display display, Config& config) const;
65 Error getChangedCompositionTypes(Display display,
66 std::vector<Layer>& layers,
67 std::vector<IComposer::Composition>& types) const;
68 Error getColorModes(Display display, std::vector<ColorMode>& modes) const;
69 Error getDisplayAttribute(Display display, Config config,
70 IComposer::Attribute attribute, int32_t& value) const;
71 Error getDisplayConfigs(Display display,
72 std::vector<Config>& configs) const;
73 Error getDisplayName(Display display, std::string& name) const;
74
75 Error getDisplayRequests(Display display, uint32_t& displayRequestMask,
76 std::vector<Layer>& layers,
77 std::vector<uint32_t>& layerRequestMasks) const;
78
79 Error getDisplayType(Display display, IComposer::DisplayType& type) const;
80 Error getDozeSupport(Display display, bool& support) const;
81 Error getHdrCapabilities(Display display, std::vector<Hdr>& types,
82 float& maxLuminance, float& maxAverageLuminance,
83 float& minLuminance) const;
84
85 Error getReleaseFences(Display display, std::vector<Layer>& layers,
86 std::vector<int>& releaseFences) const;
87
88 Error presentDisplay(Display display, int& presentFence) const;
89
90 Error setActiveConfig(Display display, Config config) const;
91 Error setClientTarget(Display display, const native_handle_t* target,
92 int acquireFence, Dataspace dataspace,
93 const std::vector<IComposer::Rect>& damage) const;
94 Error setColorMode(Display display, ColorMode mode) const;
95 Error setColorTransform(Display display, const float* matrix,
96 ColorTransform hint) const;
97 Error setOutputBuffer(Display display, const native_handle_t* buffer,
98 int releaseFence) const;
99 Error setPowerMode(Display display, IComposer::PowerMode mode) const;
100 Error setVsyncEnabled(Display display, IComposer::Vsync enabled) const;
101
102 Error validateDisplay(Display display, uint32_t& numTypes,
103 uint32_t& numRequests) const;
104
105 Error setCursorPosition(Display display, Layer layer,
106 int32_t x, int32_t y) const;
107 Error setLayerBuffer(Display display, Layer layer,
108 const native_handle_t* buffer, int acquireFence) const;
109 Error setLayerSurfaceDamage(Display display, Layer layer,
110 const std::vector<IComposer::Rect>& damage) const;
111 Error setLayerBlendMode(Display display, Layer layer,
112 IComposer::BlendMode mode) const;
113 Error setLayerColor(Display display, Layer layer,
114 const IComposer::Color& color) const;
115 Error setLayerCompositionType(Display display, Layer layer,
116 IComposer::Composition type) const;
117 Error setLayerDataspace(Display display, Layer layer,
118 Dataspace dataspace) const;
119 Error setLayerDisplayFrame(Display display, Layer layer,
120 const IComposer::Rect& frame) const;
121 Error setLayerPlaneAlpha(Display display, Layer layer,
122 float alpha) const;
123 Error setLayerSidebandStream(Display display, Layer layer,
124 const native_handle_t* stream) const;
125 Error setLayerSourceCrop(Display display, Layer layer,
126 const IComposer::FRect& crop) const;
127 Error setLayerTransform(Display display, Layer layer,
128 Transform transform) const;
129 Error setLayerVisibleRegion(Display display, Layer layer,
130 const std::vector<IComposer::Rect>& visible) const;
131 Error setLayerZOrder(Display display, Layer layer, uint32_t z) const;
132
133private:
134 sp<IComposer> mService;
135};
136
137} // namespace Hwc2
138
139} // namespace android
140
141#endif // ANDROID_SF_COMPOSER_HAL_H