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