blob: f9c5aa0dc0d7837e32b853d8e051b8c08e495f9d [file] [log] [blame]
Marissa Wall6bd8bfd2016-12-15 12:25:31 -08001/*
2 * Copyright (C) 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#include <sstream>
18
19#include "Hwc2TestLayer.h"
20
Marissa Wallf7618ed2016-12-15 12:34:39 -080021Hwc2TestLayer::Hwc2TestLayer(Hwc2TestCoverage coverage, const Area& displayArea)
Marissa Wallffc67da2016-12-15 12:26:09 -080022 : mBlendMode(coverage),
Marissa Wallc57468f2016-12-15 12:31:12 -080023 mBufferArea(coverage, displayArea),
Marissa Wallee242782016-12-15 12:30:12 -080024 mColor(coverage),
Marissa Wallb72b5c92016-12-15 12:26:39 -080025 mComposition(coverage),
Marissa Wall2b1f5302016-12-15 12:27:20 -080026 mDataspace(coverage),
Marissa Wall600a73b2016-12-15 12:30:39 -080027 mDisplayFrame(coverage, displayArea),
Marissa Wallac108192016-12-15 12:27:48 -080028 mPlaneAlpha(coverage),
Marissa Wallc57468f2016-12-15 12:31:12 -080029 mSourceCrop(coverage),
Marissa Wallad761812016-12-15 12:32:24 -080030 mSurfaceDamage(coverage),
Marissa Wallf7618ed2016-12-15 12:34:39 -080031 mTransform(coverage)
Marissa Wallc57468f2016-12-15 12:31:12 -080032{
Marissa Wall5a240aa2016-12-15 12:34:06 -080033 mBufferArea.setDependent(&mBuffer);
Marissa Wallc57468f2016-12-15 12:31:12 -080034 mBufferArea.setDependent(&mSourceCrop);
Marissa Wallad761812016-12-15 12:32:24 -080035 mBufferArea.setDependent(&mSurfaceDamage);
Marissa Wallee242782016-12-15 12:30:12 -080036 mBlendMode.setDependent(&mColor);
Marissa Wallc57468f2016-12-15 12:31:12 -080037}
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080038
39std::string Hwc2TestLayer::dump() const
40{
41 std::stringstream dmp;
42
43 dmp << "layer: \n";
Marissa Wallffc67da2016-12-15 12:26:09 -080044
45 for (auto property : mProperties) {
46 dmp << property->dump();
47 }
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080048
Marissa Wallf7618ed2016-12-15 12:34:39 -080049 dmp << mVisibleRegion.dump();
Marissa Wall273b1df2016-12-15 12:28:47 -080050 dmp << "\tz order: " << mZOrder << "\n";
51
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080052 return dmp.str();
53}
54
Marissa Wall5a240aa2016-12-15 12:34:06 -080055int Hwc2TestLayer::getBuffer(buffer_handle_t* outHandle,
56 android::base::unique_fd* outAcquireFence)
57{
58 int32_t acquireFence;
59 int ret = mBuffer.get(outHandle, &acquireFence);
60 outAcquireFence->reset(acquireFence);
61 return ret;
62}
63
Marissa Wallf7618ed2016-12-15 12:34:39 -080064void Hwc2TestLayer::setZOrder(uint32_t zOrder)
65{
66 mZOrder = zOrder;
67}
68
69void Hwc2TestLayer::setVisibleRegion(const android::Region& region)
70{
71 return mVisibleRegion.set(region);
72}
73
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080074void Hwc2TestLayer::reset()
75{
Marissa Wallf7618ed2016-12-15 12:34:39 -080076 mVisibleRegion.release();
77
Marissa Wallffc67da2016-12-15 12:26:09 -080078 for (auto property : mProperties) {
79 property->reset();
80 }
81}
82
83hwc2_blend_mode_t Hwc2TestLayer::getBlendMode() const
84{
85 return mBlendMode.get();
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080086}
87
Marissa Wallf7618ed2016-12-15 12:34:39 -080088Area Hwc2TestLayer::getBufferArea() const
89{
90 return mBufferArea.get();
91}
92
Marissa Wallee242782016-12-15 12:30:12 -080093hwc_color_t Hwc2TestLayer::getColor() const
94{
95 return mColor.get();
96}
97
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080098hwc2_composition_t Hwc2TestLayer::getComposition() const
99{
100 return mComposition.get();
101}
102
Marissa Wall2a0aaf92016-12-15 12:31:37 -0800103/* The cursor position corresponds to {displayFrame.left, displayFrame.top} */
104hwc_rect_t Hwc2TestLayer::getCursorPosition() const
105{
106 return mDisplayFrame.get();
107}
108
Marissa Wallb72b5c92016-12-15 12:26:39 -0800109android_dataspace_t Hwc2TestLayer::getDataspace() const
110{
111 return mDataspace.get();
112}
113
Marissa Wall600a73b2016-12-15 12:30:39 -0800114hwc_rect_t Hwc2TestLayer::getDisplayFrame() const
115{
116 return mDisplayFrame.get();
117}
118
Marissa Wall2b1f5302016-12-15 12:27:20 -0800119float Hwc2TestLayer::getPlaneAlpha() const
120{
121 return mPlaneAlpha.get();
122}
123
Marissa Wallc57468f2016-12-15 12:31:12 -0800124hwc_frect_t Hwc2TestLayer::getSourceCrop() const
125{
126 return mSourceCrop.get();
127}
128
Marissa Wallad761812016-12-15 12:32:24 -0800129hwc_region_t Hwc2TestLayer::getSurfaceDamage() const
130{
131 return mSurfaceDamage.get();
132}
133
Marissa Wallac108192016-12-15 12:27:48 -0800134hwc_transform_t Hwc2TestLayer::getTransform() const
135{
136 return mTransform.get();
137}
138
Marissa Wallf7618ed2016-12-15 12:34:39 -0800139hwc_region_t Hwc2TestLayer::getVisibleRegion() const
140{
141 return mVisibleRegion.get();
142}
143
Marissa Wall273b1df2016-12-15 12:28:47 -0800144uint32_t Hwc2TestLayer::getZOrder() const
145{
146 return mZOrder;
147}
148
Marissa Wallffc67da2016-12-15 12:26:09 -0800149bool Hwc2TestLayer::advanceBlendMode()
150{
151 return mBlendMode.advance();
152}
153
Marissa Wallc57468f2016-12-15 12:31:12 -0800154bool Hwc2TestLayer::advanceBufferArea()
155{
156 return mBufferArea.advance();
157}
158
Marissa Wallee242782016-12-15 12:30:12 -0800159bool Hwc2TestLayer::advanceColor()
160{
161 return mColor.advance();
162}
163
Marissa Wall6bd8bfd2016-12-15 12:25:31 -0800164bool Hwc2TestLayer::advanceComposition()
165{
166 return mComposition.advance();
167}
Marissa Wallb72b5c92016-12-15 12:26:39 -0800168
Marissa Wall2a0aaf92016-12-15 12:31:37 -0800169bool Hwc2TestLayer::advanceCursorPosition()
170{
171 return mDisplayFrame.advance();
172}
173
Marissa Wallb72b5c92016-12-15 12:26:39 -0800174bool Hwc2TestLayer::advanceDataspace()
175{
176 return mDataspace.advance();
177}
Marissa Wall2b1f5302016-12-15 12:27:20 -0800178
Marissa Wall600a73b2016-12-15 12:30:39 -0800179bool Hwc2TestLayer::advanceDisplayFrame()
180{
181 return mDisplayFrame.advance();
182}
183
Marissa Wall2b1f5302016-12-15 12:27:20 -0800184bool Hwc2TestLayer::advancePlaneAlpha()
185{
186 return mPlaneAlpha.advance();
187}
Marissa Wallac108192016-12-15 12:27:48 -0800188
Marissa Wallc57468f2016-12-15 12:31:12 -0800189bool Hwc2TestLayer::advanceSourceCrop()
190{
191 return mSourceCrop.advance();
192}
193
Marissa Wallad761812016-12-15 12:32:24 -0800194bool Hwc2TestLayer::advanceSurfaceDamage()
195{
196 return mSurfaceDamage.advance();
197}
198
Marissa Wallac108192016-12-15 12:27:48 -0800199bool Hwc2TestLayer::advanceTransform()
200{
201 return mTransform.advance();
202}
Marissa Wallf7618ed2016-12-15 12:34:39 -0800203
204bool Hwc2TestLayer::advanceVisibleRegion()
205{
206 if (mPlaneAlpha.advance())
207 return true;
208 return mDisplayFrame.advance();
209}