1 /*
2  * Copyright (C) 2020 Arm Limited. All rights reserved.
3  *
4  * Copyright 2016 The Android Open Source Project
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 #ifndef ANDROID_HARDWARE_GRAPHICS_MAPPER_V4_x_GRALLOC_MAPPER_H
19 #define ANDROID_HARDWARE_GRAPHICS_MAPPER_V4_x_GRALLOC_MAPPER_H
20 
21 #include <android/hardware/graphics/mapper/IMapper.h>
22 #include <android/hardware/graphics/mapper/utils/IMapperMetadataTypes.h>
23 #include <android/hardware/graphics/mapper/utils/IMapperProvider.h>
24 
25 #include "hidl_common/Mapper.h"
26 
27 namespace arm {
28 namespace mapper {
29 
30 class GrallocMapper final : public vendor::mapper::IMapperV5Impl {
31 public:
32     GrallocMapper() = default;
33 
34     ~GrallocMapper() = default;
35 
36     AIMapper_Error importBuffer(const native_handle_t* _Nonnull handle,
37                                 buffer_handle_t _Nullable* _Nonnull outBufferHandle) override;
38 
39     AIMapper_Error freeBuffer(buffer_handle_t _Nonnull buffer) override;
40 
41     AIMapper_Error getTransportSize(buffer_handle_t _Nonnull buffer, uint32_t* _Nonnull outNumFds,
42                                     uint32_t* _Nonnull outNumInts) override;
43 
44     AIMapper_Error lock(buffer_handle_t _Nonnull buffer, uint64_t cpuUsage, ARect accessRegion,
45                         int acquireFence, void* _Nullable* _Nonnull outData) override;
46 
47     AIMapper_Error unlock(buffer_handle_t _Nonnull buffer, int* _Nonnull releaseFence) override;
48 
49     AIMapper_Error flushLockedBuffer(buffer_handle_t _Nonnull buffer) override;
50 
51     AIMapper_Error rereadLockedBuffer(buffer_handle_t _Nonnull buffer) override;
52 
53     int32_t getMetadata(buffer_handle_t _Nonnull buffer, AIMapper_MetadataType metadataType,
54                         void* _Nonnull outData, size_t outDataSize) override;
55 
56     int32_t getStandardMetadata(buffer_handle_t _Nonnull buffer, int64_t standardMetadataType,
57                                 void* _Nonnull outData, size_t outDataSize) override;
58 
59     AIMapper_Error setMetadata(buffer_handle_t _Nonnull buffer, AIMapper_MetadataType metadataType,
60                                const void* _Nonnull metadata, size_t metadataSize) override;
61 
62     AIMapper_Error setStandardMetadata(buffer_handle_t _Nonnull buffer,
63                                        int64_t standardMetadataType, const void* _Nonnull metadata,
64                                        size_t metadataSize) override;
65 
66     AIMapper_Error listSupportedMetadataTypes(
67             const AIMapper_MetadataTypeDescription* _Nullable* _Nonnull outDescriptionList,
68             size_t* _Nonnull outNumberOfDescriptions) override;
69 
70     AIMapper_Error dumpBuffer(buffer_handle_t _Nonnull bufferHandle,
71                               AIMapper_DumpBufferCallback _Nonnull dumpBufferCallback,
72                               void* _Null_unspecified context) override;
73 
74     AIMapper_Error dumpAllBuffers(AIMapper_BeginDumpBufferCallback _Nonnull beginDumpBufferCallback,
75                                   AIMapper_DumpBufferCallback _Nonnull dumpBufferCallback,
76                                   void* _Null_unspecified context) override;
77 
78     AIMapper_Error getReservedRegion(buffer_handle_t _Nonnull buffer,
79                                      void* _Nullable* _Nonnull outReservedRegion,
80                                      uint64_t* _Nonnull outReservedSize) override;
81 };
82 
83 } // namespace mapper
84 } // namespace arm
85 
86 #endif // ANDROID_HARDWARE_GRAPHICS_MAPPER_V4_x_GRALLOC_MAPPER_H
87