/* * Copyright 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include #include #include #define ERROR_HAS_CHANGES 5 namespace android { namespace hardware::graphics::composer::hal { namespace types = android::hardware::graphics::common; namespace V2_1 = android::hardware::graphics::composer::V2_1; namespace V2_2 = android::hardware::graphics::composer::V2_2; namespace V2_3 = android::hardware::graphics::composer::V2_3; namespace V2_4 = android::hardware::graphics::composer::V2_4; using types::V1_0::ColorTransform; using types::V1_0::Transform; using types::V1_1::RenderIntent; using types::V1_2::ColorMode; using types::V1_2::Dataspace; using types::V1_2::Hdr; using types::V1_2::PixelFormat; using V2_1::Error; using V2_4::IComposer; using V2_4::IComposerCallback; using V2_4::IComposerClient; using V2_4::VsyncPeriodChangeTimeline; using V2_4::VsyncPeriodNanos; using Attribute = IComposerClient::Attribute; using BlendMode = IComposerClient::BlendMode; using Color = IComposerClient::Color; using Composition = IComposerClient::Composition; using Connection = IComposerCallback::Connection; using ContentType = IComposerClient::ContentType; using Capability = IComposer::Capability; using ClientTargetProperty = IComposerClient::ClientTargetProperty; using DisplayCapability = IComposerClient::DisplayCapability; using DisplayRequest = IComposerClient::DisplayRequest; using DisplayType = IComposerClient::DisplayType; using HWConfigId = V2_1::Config; using HWDisplayId = V2_1::Display; using HWError = V2_1::Error; using HWLayerId = V2_1::Layer; using LayerGenericMetadataKey = IComposerClient::LayerGenericMetadataKey; using LayerRequest = IComposerClient::LayerRequest; using PerFrameMetadata = IComposerClient::PerFrameMetadata; using PerFrameMetadataKey = IComposerClient::PerFrameMetadataKey; using PerFrameMetadataBlob = IComposerClient::PerFrameMetadataBlob; using PowerMode = IComposerClient::PowerMode; using Vsync = IComposerClient::Vsync; using VsyncPeriodChangeConstraints = IComposerClient::VsyncPeriodChangeConstraints; } // namespace hardware::graphics::composer::hal inline bool hasChangesError(hardware::graphics::composer::hal::Error error) { return ERROR_HAS_CHANGES == static_cast(error); } inline std::string to_string(hardware::graphics::composer::hal::Attribute attribute) { switch (attribute) { case hardware::graphics::composer::hal::Attribute::INVALID: return "Invalid"; case hardware::graphics::composer::hal::Attribute::WIDTH: return "Width"; case hardware::graphics::composer::hal::Attribute::HEIGHT: return "Height"; case hardware::graphics::composer::hal::Attribute::VSYNC_PERIOD: return "VsyncPeriod"; case hardware::graphics::composer::hal::Attribute::DPI_X: return "DpiX"; case hardware::graphics::composer::hal::Attribute::DPI_Y: return "DpiY"; default: return "Unknown"; } } inline std::string to_string(hardware::graphics::composer::hal::Composition composition) { switch (composition) { case hardware::graphics::composer::hal::Composition::INVALID: return "Invalid"; case hardware::graphics::composer::hal::Composition::CLIENT: return "Client"; case hardware::graphics::composer::hal::Composition::DEVICE: return "Device"; case hardware::graphics::composer::hal::Composition::SOLID_COLOR: return "SolidColor"; case hardware::graphics::composer::hal::Composition::CURSOR: return "Cursor"; case hardware::graphics::composer::hal::Composition::SIDEBAND: return "Sideband"; default: return "Unknown"; } } inline std::string to_string(hardware::graphics::composer::hal::V2_4::Error error) { // 5 is reserved for historical reason, during validation 5 means has changes. if (ERROR_HAS_CHANGES == static_cast(error)) { return "HasChanges"; } switch (error) { case hardware::graphics::composer::hal::V2_4::Error::NONE: return "None"; case hardware::graphics::composer::hal::V2_4::Error::BAD_CONFIG: return "BadConfig"; case hardware::graphics::composer::hal::V2_4::Error::BAD_DISPLAY: return "BadDisplay"; case hardware::graphics::composer::hal::V2_4::Error::BAD_LAYER: return "BadLayer"; case hardware::graphics::composer::hal::V2_4::Error::BAD_PARAMETER: return "BadParameter"; case hardware::graphics::composer::hal::V2_4::Error::NO_RESOURCES: return "NoResources"; case hardware::graphics::composer::hal::V2_4::Error::NOT_VALIDATED: return "NotValidated"; case hardware::graphics::composer::hal::V2_4::Error::UNSUPPORTED: return "Unsupported"; case hardware::graphics::composer::hal::V2_4::Error::SEAMLESS_NOT_ALLOWED: return "SeamlessNotAllowed"; case hardware::graphics::composer::hal::V2_4::Error::SEAMLESS_NOT_POSSIBLE: return "SeamlessNotPossible"; default: return "Unknown"; } } inline std::string to_string(hardware::graphics::composer::hal::Error error) { return to_string(static_cast(error)); } inline std::string to_string(hardware::graphics::composer::hal::PowerMode mode) { switch (mode) { case hardware::graphics::composer::hal::PowerMode::OFF: return "Off"; case hardware::graphics::composer::hal::PowerMode::DOZE: return "Doze"; case hardware::graphics::composer::hal::PowerMode::ON: return "On"; case hardware::graphics::composer::hal::PowerMode::DOZE_SUSPEND: return "DozeSuspend"; case hardware::graphics::composer::hal::PowerMode::ON_SUSPEND: return "OnSuspend"; default: return "Unknown"; } } } // namespace android