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 <memory> 10 11 #include "cros_gralloc/cros_gralloc_driver.h" 12 #include "cros_gralloc/cros_gralloc_handle.h" 13 14 class CrosGralloc4Mapper : public android::hardware::graphics::mapper::V4_0::IMapper { 15 public: 16 CrosGralloc4Mapper() = default; 17 18 android::hardware::Return<void> createDescriptor(const BufferDescriptorInfo& description, 19 createDescriptor_cb hidlCb) override; 20 21 android::hardware::Return<void> importBuffer(const android::hardware::hidl_handle& rawHandle, 22 importBuffer_cb hidlCb) override; 23 24 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> freeBuffer( 25 void* rawHandle) override; 26 27 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> validateBufferSize( 28 void* rawHandle, const BufferDescriptorInfo& descriptor, uint32_t stride) override; 29 30 android::hardware::Return<void> getTransportSize(void* rawHandle, 31 getTransportSize_cb hidlCb) override; 32 33 android::hardware::Return<void> lock(void* rawHandle, uint64_t cpuUsage, 34 const Rect& accessRegion, 35 const android::hardware::hidl_handle& acquireFence, 36 lock_cb hidlCb) override; 37 38 android::hardware::Return<void> unlock(void* rawHandle, unlock_cb hidlCb) override; 39 40 android::hardware::Return<void> flushLockedBuffer(void* rawHandle, 41 flushLockedBuffer_cb hidlCb) override; 42 43 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> rereadLockedBuffer( 44 void* rawHandle) override; 45 46 android::hardware::Return<void> isSupported(const BufferDescriptorInfo& descriptor, 47 isSupported_cb hidlCb) override; 48 49 android::hardware::Return<void> get(void* rawHandle, const MetadataType& metadataType, 50 get_cb hidlCb) override; 51 52 android::hardware::Return<android::hardware::graphics::mapper::V4_0::Error> set( 53 void* rawHandle, const MetadataType& metadataType, 54 const android::hardware::hidl_vec<uint8_t>& metadata) override; 55 56 android::hardware::Return<void> getFromBufferDescriptorInfo( 57 const BufferDescriptorInfo& descriptor, const MetadataType& metadataType, 58 getFromBufferDescriptorInfo_cb hidlCb) override; 59 60 android::hardware::Return<void> listSupportedMetadataTypes( 61 listSupportedMetadataTypes_cb hidlCb) override; 62 63 android::hardware::Return<void> dumpBuffer(void* rawHandle, dumpBuffer_cb hidlCb) override; 64 android::hardware::Return<void> dumpBuffers(dumpBuffers_cb hidlCb) override; 65 66 android::hardware::Return<void> getReservedRegion(void* rawHandle, 67 getReservedRegion_cb hidlCb) override; 68 69 private: 70 android::hardware::Return<void> get(const cros_gralloc_buffer* crosBuffer, 71 const MetadataType& metadataType, get_cb hidlCb); 72 73 android::hardware::graphics::mapper::V4_0::Error set( 74 cros_gralloc_buffer* crosBuffer, const MetadataType& metadataType, 75 const android::hardware::hidl_vec<uint8_t>& metadata); 76 77 android::hardware::Return<void> dumpBuffer(const cros_gralloc_buffer* crosBuffer, 78 dumpBuffer_cb hidlCb); 79 80 int getResolvedDrmFormat(android::hardware::graphics::common::V1_2::PixelFormat pixelFormat, 81 uint64_t bufferUsage, uint32_t* outDrmFormat); 82 83 std::shared_ptr<cros_gralloc_driver> mDriver = cros_gralloc_driver::get_instance(); 84 }; 85 86 extern "C" android::hardware::graphics::mapper::V4_0::IMapper* HIDL_FETCH_IMapper(const char* name); 87