1 /*
2  * Copyright (c) 2019 The Linux Foundation. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *     * Redistributions of source code must retain the above copyright
8  *       notice, this list of conditions and the following disclaimer.
9  *     * Redistributions in binary form must reproduce the above
10  *       copyright notice, this list of conditions and the following
11  *       disclaimer in the documentation and/or other materials provided
12  *       with the distribution.
13  *     * Neither the name of The Linux Foundation nor the names of its
14  *       contributors may be used to endorse or promote products derived
15  *       from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #ifndef __QTIMAPPEREXTENSIONS_H__
31 #define __QTIMAPPEREXTENSIONS_H__
32 
33 #include <hidl/MQDescriptor.h>
34 #include <hidl/Status.h>
35 #include <vendor/qti/hardware/display/mapperextensions/1.1/IQtiMapperExtensions.h>
36 
37 #include "gr_buf_mgr.h"
38 namespace vendor {
39 namespace qti {
40 namespace hardware {
41 namespace display {
42 namespace mapperextensions {
43 namespace V1_1 {
44 namespace implementation {
45 
46 using ::android::sp;
47 using ::android::hardware::hidl_array;
48 using ::android::hardware::hidl_handle;
49 using ::android::hardware::hidl_memory;
50 using ::android::hardware::hidl_string;
51 using ::android::hardware::hidl_vec;
52 using ::android::hardware::Return;
53 using ::android::hardware::Void;
54 using ::android::hardware::graphics::common::V1_2::PixelFormat;
55 using ::android::hardware::graphics::mapper::V3_0::IMapper;
56 using ::android::hidl::base::V1_0::DebugInfo;
57 using ::android::hidl::base::V1_0::IBase;
58 using gralloc::BufferManager;
59 using ::vendor::qti::hardware::display::mapperextensions::V1_1::IQtiMapperExtensions;
60 using ::vendor::qti::hardware::display::mapperextensions::V1_0::Error;
61 using ::vendor::qti::hardware::display::mapperextensions::V1_0::PlaneLayout;
62 using ::vendor::qti::hardware::display::mapperextensions::V1_0::YCbCrLayout;
63 
64 class QtiMapperExtensions : public IQtiMapperExtensions {
65  public:
66   QtiMapperExtensions();
67   Return<void> getMapSecureBufferFlag(void *buffer, getMapSecureBufferFlag_cb _hidl_cb) override;
68   Return<void> getInterlacedFlag(void *buffer, getInterlacedFlag_cb _hidl_cb) override;
69   Return<void> getCustomDimensions(void *buffer, getCustomDimensions_cb _hidl_cb) override;
70   Return<void> getRgbDataAddress(void *buffer, getRgbDataAddress_cb _hidl_cb) override;
71   Return<void> calculateBufferAttributes(int32_t width, int32_t height, int32_t format,
72                                          uint64_t usage,
73                                          calculateBufferAttributes_cb _hidl_cb) override;
74   Return<void> getCustomFormatFlags(int32_t format, uint64_t usage,
75                                     getCustomFormatFlags_cb _hidl_cb) override;
76   Return<void> getColorSpace(void *buffer, getColorSpace_cb _hidl_cb) override;
77   Return<void> getYuvPlaneInfo(void *buffer, getYuvPlaneInfo_cb _hidl_cb) override;
78   Return<Error> setSingleBufferMode(void *buffer, bool enable) override;
79   Return<void> getFd(void *buffer, getFd_cb _hidl_cb) override;
80   Return<void> getWidth(void *buffer, getWidth_cb _hidl_cb) override;
81   Return<void> getHeight(void *buffer, getHeight_cb _hidl_cb) override;
82   Return<void> getOffset(void *buffer, getOffset_cb _hidl_cb) override;
83   Return<void> getSize(void *buffer, getSize_cb _hidl_cb) override;
84   Return<void> getFormat(void *buffer, getFormat_cb _hidl_cb) override;
85   Return<void> getPrivateFlags(void *buffer, getPrivateFlags_cb _hidl_cb) override;
86   Return<void> getUnalignedWidth(void *buffer, getUnalignedWidth_cb _hidl_cb) override;
87   Return<void> getUnalignedHeight(void *buffer, getUnalignedHeight_cb _hidl_cb) override;
88   Return<void> getLayerCount(void *buffer, getLayerCount_cb _hidl_cb) override;
89   Return<void> getId(void *buffer, getId_cb _hidl_cb) override;
90   Return<void> getUsageFlags(void *buffer, getUsageFlags_cb _hidl_cb) override;
91   Return<void> getSurfaceMetadata(void *buffer, getSurfaceMetadata_cb _hidl_cb) override;
92   Return<void> getFormatLayout(int32_t format, uint64_t usage, int32_t flags, int32_t width,
93                                int32_t height, getFormatLayout_cb hidl_cb) override;
94   Return<Error> getSurfaceMetadata_V1(void *buffer, void *metadata) override;
95 };
96 
97 }  // namespace implementation
98 }  // namespace V1_1
99 }  // namespace mapperextensions
100 }  // namespace display
101 }  // namespace hardware
102 }  // namespace qti
103 }  // namespace vendor
104 
105 #endif  // __QTIMAPPEREXTENSIONS_H__
106