Hwc2TestLayers.h revision 563030b4402f4b9aa08cece732f2a4a756a0f72c
1273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall/* 2273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * Copyright (C) 2016 The Android Open Source Project 3273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * 4273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * Licensed under the Apache License, Version 2.0 (the "License"); 5273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * you may not use this file except in compliance with the License. 6273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * You may obtain a copy of the License at 7273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * 8273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * http://www.apache.org/licenses/LICENSE-2.0 9273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * 10273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * Unless required by applicable law or agreed to in writing, software 11273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * distributed under the License is distributed on an "AS IS" BASIS, 12273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * See the License for the specific language governing permissions and 14273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall * limitations under the License. 15273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall */ 16273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 17273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#ifndef _HWC2_TEST_LAYERS_H 18273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#define _HWC2_TEST_LAYERS_H 19273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 20273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#include <map> 21273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 22273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#define HWC2_INCLUDE_STRINGIFICATION 23273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#define HWC2_USE_CPP11 24273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#include <hardware/hwcomposer2.h> 25273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#undef HWC2_INCLUDE_STRINGIFICATION 26273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#undef HWC2_USE_CPP11 27273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 28273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#include "Hwc2TestProperties.h" 29273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#include "Hwc2TestLayer.h" 30273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 31273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wallclass Hwc2TestLayers { 32273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wallpublic: 33273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall Hwc2TestLayers(const std::vector<hwc2_layer_t>& layers, 34600a73b6110d6fdcebe072a9d8e2dbbe6de1c6b7Marissa Wall Hwc2TestCoverage coverage, const Area& displayArea); 35273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 36563030b4402f4b9aa08cece732f2a4a756a0f72cMarissa Wall Hwc2TestLayers(const std::vector<hwc2_layer_t>& layers, 37563030b4402f4b9aa08cece732f2a4a756a0f72cMarissa Wall Hwc2TestCoverage coverage, const Area& displayArea, 38563030b4402f4b9aa08cece732f2a4a756a0f72cMarissa Wall const std::unordered_map<Hwc2TestPropertyName, 39563030b4402f4b9aa08cece732f2a4a756a0f72cMarissa Wall Hwc2TestCoverage>& coverageExceptions); 40563030b4402f4b9aa08cece732f2a4a756a0f72cMarissa Wall 41273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall std::string dump() const; 42273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 43273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall void reset(); 44273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 451cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall bool advance(); 46f7618ed1b4d806e06c872c0fccce57163cf93b6aMarissa Wall bool advanceVisibleRegions(); 47f7618ed1b4d806e06c872c0fccce57163cf93b6aMarissa Wall 48f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall /* Test cases with multiple layers and property values can take quite some 49f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall * time to run. A significant amount of time can be spent on test cases 50f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall * where one layer is changing property values but is not visible. To 51f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall * decrease runtime, this function can be called. Removes layouts where a 52f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall * layer is completely blocked from view. It also removes layouts that do 53f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall * not cover the entire display.*/ 54f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall bool optimizeLayouts(); 55f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall 561cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall bool contains(hwc2_layer_t layer) const; 571cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall 581cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall int getBuffer(hwc2_layer_t layer, buffer_handle_t* outHandle, 591cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall int32_t* outAcquireFence); 601cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall 611cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc2_blend_mode_t getBlendMode(hwc2_layer_t layer) const; 62f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall Area getBufferArea(hwc2_layer_t layer) const; 631cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc_color_t getColor(hwc2_layer_t layer) const; 641cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc2_composition_t getComposition(hwc2_layer_t layer) const; 651cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc_rect_t getCursorPosition(hwc2_layer_t layer) const; 661cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall android_dataspace_t getDataspace(hwc2_layer_t layer) const; 671cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc_rect_t getDisplayFrame(hwc2_layer_t layer) const; 681cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall android_pixel_format_t getFormat(hwc2_layer_t layer) const; 691cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall float getPlaneAlpha(hwc2_layer_t layer) const; 701cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc_frect_t getSourceCrop(hwc2_layer_t layer) const; 711cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc_region_t getSurfaceDamage(hwc2_layer_t layer) const; 721cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc_transform_t getTransform(hwc2_layer_t layer) const; 731cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall hwc_region_t getVisibleRegion(hwc2_layer_t layer) const; 741cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall uint32_t getZOrder(hwc2_layer_t layer) const; 75273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 76273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wallprivate: 77f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall bool setVisibleRegions(); 78f7618ed1b4d806e06c872c0fccce57163cf93b6aMarissa Wall 79273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall std::map<hwc2_layer_t, Hwc2TestLayer> mTestLayers; 801cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall 811cd789cd2b300427467586f4ec721a8123f118b7Marissa Wall Area mDisplayArea; 82f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall 83f18cfb0a780c69f12439457ccc3f5272db767fddMarissa Wall bool mOptimize = false; 84273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall}; 85273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall 86273b1dfa05287a0016ae1fc230cd3a5b1b7433faMarissa Wall#endif /* ifndef _HWC2_TEST_LAYERS_H */ 87