1 /* 2 * Copyright (C) 2018 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 #pragma once 18 19 #include <gmock/gmock.h> 20 21 #include "DisplayHardware/ComposerHal.h" 22 #include "DisplayHardware/HWC2.h" 23 #include "DisplayHardware/Hal.h" 24 25 namespace android { 26 27 class GraphicBuffer; 28 29 namespace Hwc2::mock { 30 31 using android::hardware::graphics::common::V1_0::ColorTransform; 32 using android::hardware::graphics::common::V1_0::Transform; 33 using android::hardware::graphics::common::V1_1::RenderIntent; 34 using android::hardware::graphics::common::V1_2::ColorMode; 35 using android::hardware::graphics::common::V1_2::Dataspace; 36 using android::hardware::graphics::common::V1_2::PixelFormat; 37 38 using android::hardware::graphics::composer::hal::Error; 39 using android::hardware::graphics::composer::V2_1::Config; 40 using android::hardware::graphics::composer::V2_1::Display; 41 using android::hardware::graphics::composer::V2_1::IComposer; 42 using android::hardware::graphics::composer::V2_1::Layer; 43 using android::hardware::graphics::composer::V2_4::IComposerCallback; 44 using android::hardware::graphics::composer::V2_4::IComposerClient; 45 46 using aidl::android::hardware::graphics::common::DisplayDecorationSupport; 47 48 class Composer : public Hwc2::Composer { 49 public: 50 using Display = android::hardware::graphics::composer::V2_1::Display; 51 Composer(); 52 ~Composer() override; 53 54 MOCK_METHOD(bool, isSupported, (OptionalFeature), (const, override)); 55 MOCK_METHOD(bool, isVrrSupported, (), (const, override)); 56 MOCK_METHOD0(getCapabilities, 57 std::vector<aidl::android::hardware::graphics::composer3::Capability>()); 58 MOCK_METHOD0(dumpDebugInfo, std::string()); 59 MOCK_METHOD1(registerCallback, void(HWC2::ComposerCallback&)); 60 MOCK_METHOD1(executeCommands, Error(Display)); 61 MOCK_METHOD0(getMaxVirtualDisplayCount, uint32_t()); 62 MOCK_METHOD4(createVirtualDisplay, Error(uint32_t, uint32_t, PixelFormat*, Display*)); 63 MOCK_METHOD1(destroyVirtualDisplay, Error(Display)); 64 MOCK_METHOD1(acceptDisplayChanges, Error(Display)); 65 MOCK_METHOD2(createLayer, Error(Display, Layer* outLayer)); 66 MOCK_METHOD2(destroyLayer, Error(Display, Layer)); 67 MOCK_METHOD2(getActiveConfig, Error(Display, Config*)); 68 MOCK_METHOD3(getChangedCompositionTypes, 69 Error(Display, std::vector<Layer>*, 70 std::vector<aidl::android::hardware::graphics::composer3::Composition>*)); 71 MOCK_METHOD2(getColorModes, Error(Display, std::vector<ColorMode>*)); 72 MOCK_METHOD4(getDisplayAttribute, 73 Error(Display, Config config, IComposerClient::Attribute, int32_t*)); 74 MOCK_METHOD2(getDisplayConfigs, Error(Display, std::vector<Config>*)); 75 MOCK_METHOD3(getDisplayConfigurations, 76 Error(Display, int32_t, std::vector<DisplayConfiguration>*)); 77 MOCK_METHOD2(getDisplayName, Error(Display, std::string*)); 78 MOCK_METHOD4(getDisplayRequests, 79 Error(Display, uint32_t*, std::vector<Layer>*, std::vector<uint32_t>*)); 80 MOCK_METHOD2(getDozeSupport, Error(Display, bool*)); 81 MOCK_METHOD2(getKernelIdleTimerSupport, Error(Display, bool*)); 82 MOCK_METHOD5(getHdrCapabilities, Error(Display, std::vector<Hdr>*, float*, float*, float*)); 83 MOCK_METHOD1(getPerFrameMetadataKeys, 84 std::vector<IComposerClient::PerFrameMetadataKey>(Display)); 85 MOCK_METHOD2(getDataspaceSaturationMatrix, Error(Dataspace, mat4*)); 86 MOCK_METHOD3(getDisplayIdentificationData, Error(Display, uint8_t*, std::vector<uint8_t>*)); 87 MOCK_METHOD3(getReleaseFences, Error(Display, std::vector<Layer>*, std::vector<int>*)); 88 MOCK_METHOD2(presentDisplay, Error(Display, int*)); 89 MOCK_METHOD2(setActiveConfig, Error(Display, Config)); 90 MOCK_METHOD(Error, setClientTarget, 91 (Display, uint32_t, const sp<GraphicBuffer>&, int, Dataspace, 92 const std::vector<IComposerClient::Rect>&, float), 93 (override)); 94 MOCK_METHOD3(setColorMode, Error(Display, ColorMode, RenderIntent)); 95 MOCK_METHOD2(setColorTransform, Error(Display, const float*)); 96 MOCK_METHOD3(setOutputBuffer, Error(Display, const native_handle_t*, int)); 97 MOCK_METHOD2(setPowerMode, Error(Display, IComposerClient::PowerMode)); 98 MOCK_METHOD2(setVsyncEnabled, Error(Display, IComposerClient::Vsync)); 99 MOCK_METHOD1(setClientTargetSlotCount, Error(Display)); 100 MOCK_METHOD(Error, validateDisplay, (Display, nsecs_t, int32_t, uint32_t*, uint32_t*)); 101 MOCK_METHOD(Error, presentOrValidateDisplay, 102 (Display, nsecs_t, int32_t, uint32_t*, uint32_t*, int*, uint32_t*)); 103 MOCK_METHOD4(setCursorPosition, Error(Display, Layer, int32_t, int32_t)); 104 MOCK_METHOD5(setLayerBuffer, Error(Display, Layer, uint32_t, const sp<GraphicBuffer>&, int)); 105 MOCK_METHOD4(setLayerBufferSlotsToClear, 106 Error(Display, Layer, const std::vector<uint32_t>&, uint32_t)); 107 MOCK_METHOD3(setLayerSurfaceDamage, 108 Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); 109 MOCK_METHOD3(setLayerBlendMode, Error(Display, Layer, IComposerClient::BlendMode)); 110 MOCK_METHOD3(setLayerColor, 111 Error(Display, Layer, const aidl::android::hardware::graphics::composer3::Color&)); 112 MOCK_METHOD3(setLayerCompositionType, 113 Error(Display, Layer, aidl::android::hardware::graphics::composer3::Composition)); 114 MOCK_METHOD3(setLayerDataspace, Error(Display, Layer, Dataspace)); 115 MOCK_METHOD3(setLayerPerFrameMetadata, 116 Error(Display, Layer, const std::vector<IComposerClient::PerFrameMetadata>&)); 117 MOCK_METHOD3(setLayerDisplayFrame, Error(Display, Layer, const IComposerClient::Rect&)); 118 MOCK_METHOD3(setLayerPlaneAlpha, Error(Display, Layer, float)); 119 MOCK_METHOD3(setLayerSidebandStream, Error(Display, Layer, const native_handle_t*)); 120 MOCK_METHOD3(setLayerSourceCrop, Error(Display, Layer, const IComposerClient::FRect&)); 121 MOCK_METHOD3(setLayerTransform, Error(Display, Layer, Transform)); 122 MOCK_METHOD3(setLayerVisibleRegion, 123 Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); 124 MOCK_METHOD3(setLayerZOrder, Error(Display, Layer, uint32_t)); 125 MOCK_METHOD3(getRenderIntents, Error(Display, ColorMode, std::vector<RenderIntent>*)); 126 MOCK_METHOD3(setLayerColorTransform, Error(Display, Layer, const float*)); 127 MOCK_METHOD4(getDisplayedContentSamplingAttributes, 128 Error(Display, PixelFormat*, Dataspace*, uint8_t*)); 129 MOCK_METHOD4(setDisplayContentSamplingEnabled, Error(Display, bool, uint8_t, uint64_t)); 130 MOCK_METHOD4(getDisplayedContentSample, 131 Error(Display, uint64_t, uint64_t, DisplayedFrameStats*)); 132 MOCK_METHOD3(setLayerPerFrameMetadataBlobs, 133 Error(Display, Layer, const std::vector<IComposerClient::PerFrameMetadataBlob>&)); 134 MOCK_METHOD4(setDisplayBrightness, 135 Error(Display, float, float, const DisplayBrightnessOptions&)); 136 MOCK_METHOD2( 137 getDisplayCapabilities, 138 Error(Display, 139 std::vector<aidl::android::hardware::graphics::composer3::DisplayCapability>*)); 140 MOCK_METHOD2(getDisplayConnectionType, 141 V2_4::Error(Display, IComposerClient::DisplayConnectionType*)); 142 MOCK_METHOD3(getSupportedDisplayVsyncPeriods, 143 V2_4::Error(Display, Config, std::vector<VsyncPeriodNanos>*)); 144 MOCK_METHOD2(getDisplayVsyncPeriod, V2_4::Error(Display, VsyncPeriodNanos*)); 145 MOCK_METHOD4(setActiveConfigWithConstraints, 146 Error(Display, Config, const IComposerClient::VsyncPeriodChangeConstraints&, 147 VsyncPeriodChangeTimeline*)); 148 MOCK_METHOD2(setAutoLowLatencyMode, V2_4::Error(Display, bool)); 149 MOCK_METHOD2(setBootDisplayConfig, Error(Display, Config)); 150 MOCK_METHOD1(clearBootDisplayConfig, Error(Display)); 151 MOCK_METHOD2(getPreferredBootDisplayConfig, Error(Display, Config*)); 152 MOCK_METHOD1(getHdrConversionCapabilities, 153 Error(std::vector< 154 aidl::android::hardware::graphics::common::HdrConversionCapability>*)); 155 MOCK_METHOD2(setHdrConversionStrategy, 156 Error(aidl::android::hardware::graphics::common::HdrConversionStrategy, 157 aidl::android::hardware::graphics::common::Hdr*)); 158 MOCK_METHOD2(getSupportedContentTypes, 159 V2_4::Error(Display, std::vector<IComposerClient::ContentType>*)); 160 MOCK_METHOD2(setContentType, V2_4::Error(Display, IComposerClient::ContentType)); 161 MOCK_METHOD5(setLayerGenericMetadata, 162 V2_4::Error(Display, Layer, const std::string&, bool, 163 const std::vector<uint8_t>&)); 164 MOCK_METHOD1(getLayerGenericMetadataKeys, 165 V2_4::Error(std::vector<IComposerClient::LayerGenericMetadataKey>*)); 166 MOCK_METHOD2(getClientTargetProperty, 167 Error(Display, 168 aidl::android::hardware::graphics::composer3:: 169 ClientTargetPropertyWithBrightness*)); 170 MOCK_METHOD3(setLayerBrightness, Error(Display, Layer, float)); 171 MOCK_METHOD3(setLayerBlockingRegion, 172 Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); 173 MOCK_METHOD2(getDisplayDecorationSupport, 174 Error(Display, std::optional<DisplayDecorationSupport>*)); 175 MOCK_METHOD2(setIdleTimerEnabled, Error(Display, std::chrono::milliseconds)); 176 MOCK_METHOD2(hasDisplayIdleTimerCapability, Error(Display, bool*)); 177 MOCK_METHOD2(getPhysicalDisplayOrientation, Error(Display, AidlTransform*)); 178 MOCK_METHOD1(getOverlaySupport, 179 Error(aidl::android::hardware::graphics::composer3::OverlayProperties*)); 180 MOCK_METHOD1(onHotplugConnect, void(Display)); 181 MOCK_METHOD1(onHotplugDisconnect, void(Display)); 182 MOCK_METHOD(Error, setRefreshRateChangedCallbackDebugEnabled, (Display, bool)); 183 MOCK_METHOD(Error, notifyExpectedPresent, (Display, nsecs_t, int32_t)); 184 MOCK_METHOD( 185 Error, getRequestedLuts, 186 (Display, std::vector<Layer>*, 187 std::vector<aidl::android::hardware::graphics::composer3::DisplayLuts::LayerLut>*)); 188 MOCK_METHOD(Error, setLayerLuts, 189 (Display, Layer, aidl::android::hardware::graphics::composer3::Luts&)); 190 MOCK_METHOD(Error, getMaxLayerPictureProfiles, (Display, int32_t*)); 191 MOCK_METHOD(Error, setDisplayPictureProfileId, (Display, PictureProfileId id)); 192 MOCK_METHOD(Error, setLayerPictureProfileId, (Display, Layer, PictureProfileId id)); 193 }; 194 195 } // namespace Hwc2::mock 196 } // namespace android 197