blob: fcf5768ff00e3dcadbcf25e6a82c23077f1a4413 [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 Wall600a73b2016-12-15 12:30:39 -080021Hwc2TestLayer::Hwc2TestLayer(Hwc2TestCoverage coverage, const Area& displayArea,
22 uint32_t zOrder)
Marissa Wallffc67da2016-12-15 12:26:09 -080023 : mBlendMode(coverage),
Marissa Wallc57468f2016-12-15 12:31:12 -080024 mBufferArea(coverage, displayArea),
Marissa Wallee242782016-12-15 12:30:12 -080025 mColor(coverage),
Marissa Wallb72b5c92016-12-15 12:26:39 -080026 mComposition(coverage),
Marissa Wall2b1f5302016-12-15 12:27:20 -080027 mDataspace(coverage),
Marissa Wall600a73b2016-12-15 12:30:39 -080028 mDisplayFrame(coverage, displayArea),
Marissa Wallac108192016-12-15 12:27:48 -080029 mPlaneAlpha(coverage),
Marissa Wallc57468f2016-12-15 12:31:12 -080030 mSourceCrop(coverage),
Marissa Wallad761812016-12-15 12:32:24 -080031 mSurfaceDamage(coverage),
Marissa Wall273b1df2016-12-15 12:28:47 -080032 mTransform(coverage),
Marissa Wallc57468f2016-12-15 12:31:12 -080033 mZOrder(zOrder)
34{
Marissa Wall5a240aa2016-12-15 12:34:06 -080035 mBufferArea.setDependent(&mBuffer);
Marissa Wallc57468f2016-12-15 12:31:12 -080036 mBufferArea.setDependent(&mSourceCrop);
Marissa Wallad761812016-12-15 12:32:24 -080037 mBufferArea.setDependent(&mSurfaceDamage);
Marissa Wallee242782016-12-15 12:30:12 -080038 mBlendMode.setDependent(&mColor);
Marissa Wallc57468f2016-12-15 12:31:12 -080039}
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080040
41std::string Hwc2TestLayer::dump() const
42{
43 std::stringstream dmp;
44
45 dmp << "layer: \n";
Marissa Wallffc67da2016-12-15 12:26:09 -080046
47 for (auto property : mProperties) {
48 dmp << property->dump();
49 }
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080050
Marissa Wall273b1df2016-12-15 12:28:47 -080051 dmp << "\tz order: " << mZOrder << "\n";
52
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080053 return dmp.str();
54}
55
Marissa Wall5a240aa2016-12-15 12:34:06 -080056int Hwc2TestLayer::getBuffer(buffer_handle_t* outHandle,
57 android::base::unique_fd* outAcquireFence)
58{
59 int32_t acquireFence;
60 int ret = mBuffer.get(outHandle, &acquireFence);
61 outAcquireFence->reset(acquireFence);
62 return ret;
63}
64
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080065void Hwc2TestLayer::reset()
66{
Marissa Wallffc67da2016-12-15 12:26:09 -080067 for (auto property : mProperties) {
68 property->reset();
69 }
70}
71
72hwc2_blend_mode_t Hwc2TestLayer::getBlendMode() const
73{
74 return mBlendMode.get();
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080075}
76
Marissa Wallee242782016-12-15 12:30:12 -080077hwc_color_t Hwc2TestLayer::getColor() const
78{
79 return mColor.get();
80}
81
Marissa Wall6bd8bfd2016-12-15 12:25:31 -080082hwc2_composition_t Hwc2TestLayer::getComposition() const
83{
84 return mComposition.get();
85}
86
Marissa Wall2a0aaf92016-12-15 12:31:37 -080087/* The cursor position corresponds to {displayFrame.left, displayFrame.top} */
88hwc_rect_t Hwc2TestLayer::getCursorPosition() const
89{
90 return mDisplayFrame.get();
91}
92
Marissa Wallb72b5c92016-12-15 12:26:39 -080093android_dataspace_t Hwc2TestLayer::getDataspace() const
94{
95 return mDataspace.get();
96}
97
Marissa Wall600a73b2016-12-15 12:30:39 -080098hwc_rect_t Hwc2TestLayer::getDisplayFrame() const
99{
100 return mDisplayFrame.get();
101}
102
Marissa Wall2b1f5302016-12-15 12:27:20 -0800103float Hwc2TestLayer::getPlaneAlpha() const
104{
105 return mPlaneAlpha.get();
106}
107
Marissa Wallc57468f2016-12-15 12:31:12 -0800108hwc_frect_t Hwc2TestLayer::getSourceCrop() const
109{
110 return mSourceCrop.get();
111}
112
Marissa Wallad761812016-12-15 12:32:24 -0800113hwc_region_t Hwc2TestLayer::getSurfaceDamage() const
114{
115 return mSurfaceDamage.get();
116}
117
Marissa Wallac108192016-12-15 12:27:48 -0800118hwc_transform_t Hwc2TestLayer::getTransform() const
119{
120 return mTransform.get();
121}
122
Marissa Wall273b1df2016-12-15 12:28:47 -0800123uint32_t Hwc2TestLayer::getZOrder() const
124{
125 return mZOrder;
126}
127
Marissa Wallffc67da2016-12-15 12:26:09 -0800128bool Hwc2TestLayer::advanceBlendMode()
129{
130 return mBlendMode.advance();
131}
132
Marissa Wallc57468f2016-12-15 12:31:12 -0800133bool Hwc2TestLayer::advanceBufferArea()
134{
135 return mBufferArea.advance();
136}
137
Marissa Wallee242782016-12-15 12:30:12 -0800138bool Hwc2TestLayer::advanceColor()
139{
140 return mColor.advance();
141}
142
Marissa Wall6bd8bfd2016-12-15 12:25:31 -0800143bool Hwc2TestLayer::advanceComposition()
144{
145 return mComposition.advance();
146}
Marissa Wallb72b5c92016-12-15 12:26:39 -0800147
Marissa Wall2a0aaf92016-12-15 12:31:37 -0800148bool Hwc2TestLayer::advanceCursorPosition()
149{
150 return mDisplayFrame.advance();
151}
152
Marissa Wallb72b5c92016-12-15 12:26:39 -0800153bool Hwc2TestLayer::advanceDataspace()
154{
155 return mDataspace.advance();
156}
Marissa Wall2b1f5302016-12-15 12:27:20 -0800157
Marissa Wall600a73b2016-12-15 12:30:39 -0800158bool Hwc2TestLayer::advanceDisplayFrame()
159{
160 return mDisplayFrame.advance();
161}
162
Marissa Wall2b1f5302016-12-15 12:27:20 -0800163bool Hwc2TestLayer::advancePlaneAlpha()
164{
165 return mPlaneAlpha.advance();
166}
Marissa Wallac108192016-12-15 12:27:48 -0800167
Marissa Wallc57468f2016-12-15 12:31:12 -0800168bool Hwc2TestLayer::advanceSourceCrop()
169{
170 return mSourceCrop.advance();
171}
172
Marissa Wallad761812016-12-15 12:32:24 -0800173bool Hwc2TestLayer::advanceSurfaceDamage()
174{
175 return mSurfaceDamage.advance();
176}
177
Marissa Wallac108192016-12-15 12:27:48 -0800178bool Hwc2TestLayer::advanceTransform()
179{
180 return mTransform.advance();
181}