1 /* 2 * Copyright 2020 The Chromium OS Authors. All rights reserved. 3 * Use of this source code is governed by a BSD-style license that can be 4 * found in the LICENSE file. 5 */ 6 7 #include <android/hardware/graphics/mapper/4.0/IMapper.h> 8 9 #include "cros_gralloc/cros_gralloc_driver.h" 10 #include "cros_gralloc/cros_gralloc_handle.h" 11 12 class CrosGralloc4Mapper : public android::hardware::graphics::mapper::V4_0::IMapper { 13 public: 14 CrosGralloc4Mapper(); 15 16 android::hardware::Return<void> createDescriptor(const BufferDescriptorInfo& description, 17 createDescriptor_cb hidlCb) override; 18 19 android::hardware::Return<void> importBuffer(const android::hardware::hidl_handle& rawHandle, 20 importBuffer_cb hidlCb) override; 21 22 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> freeBuffer( 23 void* rawHandle) override; 24 25 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> validateBufferSize( 26 void* rawHandle, const BufferDescriptorInfo& descriptor, uint32_t stride) override; 27 28 android::hardware::Return<void> getTransportSize(void* rawHandle, 29 getTransportSize_cb hidlCb) override; 30 31 android::hardware::Return<void> lock(void* rawHandle, uint64_t cpuUsage, 32 const Rect& accessRegion, 33 const android::hardware::hidl_handle& acquireFence, 34 lock_cb hidlCb) override; 35 36 android::hardware::Return<void> unlock(void* rawHandle, unlock_cb hidlCb) override; 37 38 android::hardware::Return<void> flushLockedBuffer(void* rawHandle, 39 flushLockedBuffer_cb hidlCb) override; 40 41 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> rereadLockedBuffer( 42 void* rawHandle) override; 43 44 android::hardware::Return<void> isSupported(const BufferDescriptorInfo& descriptor, 45 isSupported_cb hidlCb) override; 46 47 android::hardware::Return<void> get(void* rawHandle, const MetadataType& metadataType, 48 get_cb hidlCb) override; 49 50 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> set( 51 void* rawHandle, const MetadataType& metadataType, 52 const android::hardware::hidl_vec<uint8_t>& metadata) override; 53 54 android::hardware::Return<void> getFromBufferDescriptorInfo( 55 const BufferDescriptorInfo& descriptor, const MetadataType& metadataType, 56 getFromBufferDescriptorInfo_cb hidlCb) override; 57 58 android::hardware::Return<void> listSupportedMetadataTypes( 59 listSupportedMetadataTypes_cb hidlCb) override; 60 61 android::hardware::Return<void> dumpBuffer(void* rawHandle, dumpBuffer_cb hidlCb) override; 62 android::hardware::Return<void> dumpBuffers(dumpBuffers_cb hidlCb) override; 63 64 android::hardware::Return<void> getReservedRegion(void* rawHandle, 65 getReservedRegion_cb hidlCb) override; 66 67 private: 68 android::hardware::Return<void> get(cros_gralloc_handle_t crosHandle, 69 const MetadataType& metadataType, get_cb hidlCb); 70 71 android::hardware::Return<void> dumpBuffer(cros_gralloc_handle_t crosHandle, 72 dumpBuffer_cb hidlCb); 73 74 int getResolvedDrmFormat(android::hardware::graphics::common::V1_2::PixelFormat pixelFormat, 75 uint64_t bufferUsage, uint32_t* outDrmFormat); 76 77 std::unique_ptr<cros_gralloc_driver> mDriver; 78 }; 79 80 extern "C" android::hardware::graphics::mapper::V4_0::IMapper* HIDL_FETCH_IMapper(const char* name); 81