1bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall/*
2bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * Copyright (C) 2016 The Android Open Source Project
3bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall *
4bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * Licensed under the Apache License, Version 2.0 (the "License");
5bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * you may not use this file except in compliance with the License.
6bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * You may obtain a copy of the License at
7bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall *
8bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall *      http://www.apache.org/licenses/LICENSE-2.0
9bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall *
10bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * Unless required by applicable law or agreed to in writing, software
11bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * distributed under the License is distributed on an "AS IS" BASIS,
12bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * See the License for the specific language governing permissions and
14bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall * limitations under the License.
15bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall */
16bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
17bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#ifndef _HWC2_TEST_VIRTUAL_DISPLAY_H
18bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#define _HWC2_TEST_VIRTUAL_DISPLAY_H
19bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
20bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#include "Hwc2TestBuffer.h"
213f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr#include "Hwc2TestPixelComparator.h"
22bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#include "Hwc2TestProperties.h"
23bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
24bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#define HWC2_INCLUDE_STRINGIFICATION
25bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#define HWC2_USE_CPP11
26bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#include <hardware/hwcomposer2.h>
27bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#undef HWC2_INCLUDE_STRINGIFICATION
28bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#undef HWC2_USE_CPP11
29bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
30bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wallclass Hwc2TestVirtualDisplay {
31bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wallpublic:
32bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall    Hwc2TestVirtualDisplay(Hwc2TestCoverage coverage);
33bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
34bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall    std::string dump() const;
35bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
363f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr    int getOutputBuffer(buffer_handle_t* outHandle,
37bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall            android::base::unique_fd* outAcquireFence);
38bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
393f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr    int verifyOutputBuffer(const Hwc2TestLayers* testLayers,
403f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr            const std::vector<hwc2_layer_t>* allLayers,
413f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr            const std::set<hwc2_layer_t>* clearLayers);
423f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr
433f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr    int writeBuffersToFile(std::string name);
44bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall    void reset();
45bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall    bool advance();
46bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
47bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall    UnsignedArea getDisplayDimension() const;
48bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
49bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wallprivate:
503f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr    Hwc2TestOutputBuffer mOutputBuffer;
513f05602a8c33a4b66a47dc077eaba95f9f1e3977David Hanna Jr    Hwc2TestExpectedBuffer mExpectedBuffer;
52bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall    Hwc2TestDisplayDimension mDisplayDimension;
53bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall};
54bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall
55bad1bc78ef50648fadbe725a1fe1c28d62097351Marissa Wall#endif /* ifndef _HWC2_TEST_VIRTUAL_DISPLAY_H */
56