1a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita/*
2a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * Copyright (C) 2017 The Android Open Source Project
3a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita *
4a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * Licensed under the Apache License, Version 2.0 (the "License");
5a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * you may not use this file except in compliance with the License.
6a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * You may obtain a copy of the License at
7a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita *
8a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita *      http://www.apache.org/licenses/LICENSE-2.0
9a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita *
10a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * Unless required by applicable law or agreed to in writing, software
11a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * distributed under the License is distributed on an "AS IS" BASIS,
12a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * See the License for the specific language governing permissions and
14a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * limitations under the License.
15a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita */
16a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
17a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita#pragma once
18a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
19a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita#include <binder/Parcelable.h>
20a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
21a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita#include <ui/PixelFormat.h>
22a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita#include <ui/Region.h>
23a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
24a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita#include <string>
2513fdc49516d17f41e64e62e73c313b0928bf13ccchaviw#include <math/vec4.h>
26a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
27a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raitanamespace android {
28a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
29a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita/* Class for transporting debug info from SurfaceFlinger to authorized
30a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * recipients.  The class is intended to be a data container. There are
31a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita * no getters or setters.
32a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita */
33a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raitaclass LayerDebugInfo : public Parcelable {
34a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raitapublic:
35a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    LayerDebugInfo() = default;
36a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    LayerDebugInfo(const LayerDebugInfo&) = default;
37a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    virtual ~LayerDebugInfo() = default;
38a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
39a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    virtual status_t writeToParcel(Parcel* parcel) const;
40a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    virtual status_t readFromParcel(const Parcel* parcel);
41a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
42a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    std::string mName = std::string("NOT FILLED");
43a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    std::string mParentName = std::string("NOT FILLED");
44a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    std::string mType = std::string("NOT FILLED");
45a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    Region mTransparentRegion = Region::INVALID_REGION;
46a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    Region mVisibleRegion = Region::INVALID_REGION;
47a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    Region mSurfaceDamageRegion = Region::INVALID_REGION;
48a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    uint32_t mLayerStack = 0;
49a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    float mX = 0.f;
50a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    float mY = 0.f;
51a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    uint32_t mZ = 0 ;
52a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    int32_t mWidth = -1;
53a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    int32_t mHeight = -1;
54a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    Rect mCrop = Rect::INVALID_RECT;
55a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    Rect mFinalCrop = Rect::INVALID_RECT;
5613fdc49516d17f41e64e62e73c313b0928bf13ccchaviw    half4 mColor = half4(1.0_hf, 1.0_hf, 1.0_hf, 0.0_hf);
57a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    uint32_t mFlags = 0;
58a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    PixelFormat mPixelFormat = PIXEL_FORMAT_NONE;
59a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    android_dataspace mDataSpace = HAL_DATASPACE_UNKNOWN;
60a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    // Row-major transform matrix (SurfaceControl::setMatrix())
61a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    float mMatrix[2][2] = {{0.f, 0.f}, {0.f, 0.f}};
62a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    int32_t mActiveBufferWidth = -1;
63a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    int32_t mActiveBufferHeight = -1;
64a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    int32_t mActiveBufferStride = 0;
65a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    PixelFormat mActiveBufferFormat = PIXEL_FORMAT_NONE;
66a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    int32_t mNumQueuedFrames = -1;
67a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    bool mRefreshPending = false;
68a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    bool mIsOpaque = false;
69a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita    bool mContentDirty = false;
70a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita};
71a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
72a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raitastd::string to_string(const LayerDebugInfo& info);
73a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita
74a099a24c93bfa599fc5c36a647e946c26f68514fKalle Raita} // namespace android
75